接口与抽象类
来源:互联网 发布:java的构造方法 编辑:程序博客网 时间:2024/05/20 11:24
Java里面由于不允许多重继承,所以如果要实现多个类的功能,则可以通过实现多个接口来实现。
Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,如果向一个Java接口里加入一个新方法,所有实现这个接口的类就无法成功通过编译了,因为必须让每一个类都再实现(覆写)这个方法才行,这显然是Java接口的缺点。
任何一个实现了一个Java接口所规定的方法的类都可以具有这个接口的类型,而一个类可以实现任意多个Java接口,从而这个类就有了多种类型。
和上面的例子不同,这里的抽象类没有继承一个接口,其中的抽象方法必须全部被覆写,可以理解为,上面例子的抽象类中抽象方法都已经有了方法体,而这个例子中都没有方法体,所以需要被覆写。
Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,如果向一个Java接口里加入一个新方法,所有实现这个接口的类就无法成功通过编译了,因为必须让每一个类都再实现(覆写)这个方法才行,这显然是Java接口的缺点。
任何一个实现了一个Java接口所规定的方法的类都可以具有这个接口的类型,而一个类可以实现任意多个Java接口,从而这个类就有了多种类型。
interface A{void a1();void a2();void a3();}abstract class B implements A{public void a1(){};public void a2(){};//public void a3(){}; //不用将接口中方法全部覆写,但是未被覆写的方法依旧被继承}class C extends B{public void a1(){};<span style="white-space:pre"></span>//可以将B中的抽象方法有选择的覆写方法public void a3(){}; //必须覆写A中的a3方法,B中虽未覆写,但抽象方法依旧存在}public class example{public static void main(String args[]){}};
抽象类是否要实现接口中的所有抽象方法? 答案是肯定的.确定的是,接口中的所有抽象方法都必须被实现,如果抽象类没被继承,则该类必须实现接口中的所有抽象方法.如果抽象类被继承了,那么该类中可以不实现,但是其子类必须实现.
abstract class B{public abstract void a1();//public abstract void a2(); //父类中的所有抽象方法必须全部被覆写public abstract void a3();}class C extends B{public void a1(){}; public void a3(){};}public class example{public static void main(String args[]){}};
和上面的例子不同,这里的抽象类没有继承一个接口,其中的抽象方法必须全部被覆写,可以理解为,上面例子的抽象类中抽象方法都已经有了方法体,而这个例子中都没有方法体,所以需要被覆写。
0 0
- 抽象类与接口
- 接口与抽象类
- 抽象类与接口
- 抽象类与接口
- 抽象类与接口
- 抽象类与接口
- 接口与抽象类
- 抽象类与接口
- 接口与抽象类
- 抽象类与接口
- 抽象类与接口
- 抽象类与接口
- 接口与抽象类
- 抽象类与接口
- 抽象类与接口
- 抽象类与接口
- 接口与抽象类
- 接口与抽象类
- CentOS 6.5 配置SVN
- Ubuntu 14.04 中安装和配置 Java JDK
- POJ1328 radar installation (Greedy)
- 经典算法-算术表达式求值
- VMware中ubuntu忘记密码的解决办法
- 接口与抽象类
- Debian-7.6下升级glibc至2.15
- 红黑树,B树,B+树,B-树 理解
- 【Unity3D】Unity3D默认的快捷键
- 第十四章 14.4节练习
- HDU 3397——Sequence operation(线段树,区间染色+区间异或+区间合并)
- matlab中hmm的使用示例
- 数据库总结(5)——数据库管理
- 红黑树