菲洛嘉青春动能素135HA FILLMED® NCTF 135HA LED指示灯的常见故障分析 智微智能 Elkhartlake K075终端,零售产业新选择 天空蓝拓客管理系统详细介绍版 muso公链项目 天使计划 是什么?[秘] 独家揭秘最前沿的家装“黑科技”——掌赋 天博体育欧洲杯特辑,东道主法兰西的失意2016 亚马逊的送货侦察员 学习听起来像挡泥板 Google Comics Factory使ML变得容易 笑着说-男性或女性 Amazon Rekognition中更好的人脸检测 关于Spaun的真相-大脑模拟 两个聊天机器人彼此聊天-有趣又怪异 GANPaint:将AI用于艺术 WCF和WF给予社区 从耳朵到脸 所有神经网络的深层缺陷 蠕虫在尾巴上平衡杆子 Kickstarter上的OpenCV AI套件 TensorFlow-Google的开源AI和计算引擎 众包取代新闻工作者 Google的DeepMind学会玩街机游戏 哑机器人V智能机器人 .NET与.NET 5融为一体 Google的深度学习-语音识别 LInQer将.NET LINQ移植到Javascript 机器人TED演讲-新的图灵测试? GAN的发明者加入苹果 您的智能手机会监视您键入的内容 人工智能帮助改善国际象棋 Zalando Flair NLP库已更新 TensorFlow 1.5包含移动版本 AlphaGo输了一场比赛-比分3-1 虚拟机器学习峰会 Microsoft开源AI调试工具 SharePoint走向移动 F#4.0发出文化变革的信号 克里斯蒂拍卖AI艺术品 人工智能如何区分 Facebook在蒙特利尔的新AI实验室 Mozilla想要您的声音 微软使用极深的神经网络赢得ImageNet 建立AI合作伙伴关系 .NET Core 3-Microsoft几乎回到了起点 神经网络-更好的销售商? Google使用AI查找您的住所 虹膜-适用于Android的Siri证明苹果没有优势 TensorFlow 2提供更快的模型训练 深度学习研究人员将为Google工作
您的位置:首页 >运维 >

Java中实现接口与继承的区别

**

Java中实现接口与继承的区别

** 首先,先来了解一下什么是接口和继承。接口一般是使用interface来定义的。接口定义同类的定义类似,分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成。定义接口的基本格式如下:

[修饰符] interface 接口名 [extends 父接口名列表]{

[public] [static] [final] 常量; [public] [abstract] 方法; }

修饰符:可选,用于指定接口的访问权限,可选值为public。如果省略则使用默认的访问权限。 接口名:必选参数,用于指定接口的名称,接口名必须是合法的Java标识符。一般情况下,要求首字母大写。 extends 父接口名列表:可选参数,用于指定要定义的接口继承于哪个父接口。当使用extends关键字时,父接口名为必选参数。 方法:接口中的方法只有定义而没有被实现。

例如,定义一个用于计算的接口,在该接口中定义了一个常量PI和两个方法,具体代码如下:

public interface CalInterface {final float PI=3.14159f;//定义用于表示圆周率的常量PIfloat getArea(float r);//定义一个用于计算面积的方法getArea()float getCircumference(float r);//定义一个用于计算周长的方法getCircumference()}

此时需要注意的是: 与Java的类文件一样的,接口文件的文件名必须与接口名相同。

继承:继承是Java面向对象编程技术的一块基石,因为它允许创建分等级层次的类,它是一种子类继承父类的特征和行为,使得子类对象(实例)具有父亲的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

生活的继承: 在这里插入图片描述 兔子和羊属于食草动物类,狮子和豹属于食肉动物类。 食草动物和食肉动物又是属于动物类。 所以继承需要符合的关系是:is-a,父类更通用,子类更具体。 虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类除了会具有父类的一般特性也会具有自身的特性。

继承的特性:

子类拥有父类非private的属性、方法;

子类可以拥有自己的属性和方法,即子类可以就自己的功能需求对父类进行扩展;

子类可以用自己的方式实现父类的方法;

Java的继承是单继承,但是是可以多重继承的,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类,这是 Java 继承区别于 C++ 继承的一个特性;

提高了类之间的耦合性,但是也会带来一些问题,如果耦合度高的话会造成代码之间越紧密,代码的独立性就越差。

在Java中,接口的实现和继承的实现很类似的,写法上是几乎是一致的,就是关键字这一部分不一样,即实现接口使用的关键字为implements,而继承使用的关键字为extends。代码如下:

实现接口的代码:

public class ButtonListener implements ActionListener {}

实现接口类型的写法与解释:

//事件处理类//实现接口一定要实现(重写)接口中所有的抽象方法//实现接口(继承):implements//public class 子类 implements 接口,接口,,{}//一个子类后面能够实现很多个接口的//实现接口一定要实现(重写)接口中所有的抽象方法//ActionListener只是一个接口,也可以换成其他的接口的,所以下面必须是public void actionPerformed(ActionEvent e)的,抽象方法需与接口保持一致的

实现接口的代码例子:

public class ButtonListener implements ActionListener { //引用传递//定义文本框变量,用来保存传递过来的文本框对象public JTextField jt;//动作处理方法public void actionPerformed(ActionEvent e){//获取文本框内容String userName = jt.getText();//比较内容是否一样:equals//比较地址是否一样:==if("123".equals(userName)){System.out.println("yes");JFrame jf = new JFrame();jf.setSize(400, 400);jf.setTitle("对话框");JLabel jl = new JLabel("账号密码验证成功");jf.add(jl);jf.setLocationRelativeTo(null);//设置可见jf.setVisible(true);}else{System.out.println("no");JFrame jf = new JFrame();jf.setSize(600, 600);jf.setTitle("对话框");JLabel jl = new JLabel("账号密码验证失敗",JLabel.CENTER);jf.add(jl);jf.setLocationRelativeTo(null);//设置可见jf.setVisible(true);}}}

继承的代码:

public class UNStudent extends Student{}

继承类型写法与解释:

/** * 大学生类 * 继承:extends * public class 子类(派生类) extends 父类(基类) implements 接口,接口,,{} * 继承中父类只有一个,并不像接口一样可以拥有很多个。 * 子类会继承父类中的属性和方法,私有属性和方法不能直接使用 * @author liu */

继承的代码例子:

public class UNStudent extends Student{public void printName(){System.out.println("名字:"+getName());}//方法重写(覆盖)//1.有继承关系的两个类之间 2.返回值类型,方法名,参数类型(个数,顺序)完全一样public void study(){System.out.println("子类重写父类的学习方法!");}}

综上所述:

实现接口与继承的区别有:

1.不同的关键字,即实现接口(implements),继承(extends);

2.在面向对象编程的时候只能是单继承,但是实现接口可以有多个,简单点说,就是实现接口可以有好多个,但是继承的中父类只能只有一个,因为父亲只有一个,这说明了继承在Java中具有单根性,子类只能去继承一个父类;

3.在接口中只能定义全局变量和抽象方法,而在继承中可以定义属性方法,变量,常量的等等…

4.当某个接口被实现的时候,在类中一定要用接口中的抽象方法,而继承中子类能随意调用父类的属性和方法,毫无压力的;

5.当你需要去调用接口时,接口中的抽象方法是一定需要写上去的,即使在抽象方法你并不需要去实现什么样的功能,但这个步骤是一定不能少的;但是在继承中并不是这样的,当子类需要实现的功能和父类中的实现功能毫无差别的时候,则父类中的实现方法可写可不写,但是当你想要在你的子类中去实现某些特有的功能时,这时候需要将父类中的实现方法去重写,以实现在子类中所需要的特定功能。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。