接口与抽象类

来源:互联网 发布:java的构造方法 编辑:程序博客网 时间:2024/05/20 11:24
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
原创粉丝点击