Java的抽象函数、抽象类、接口

1. JAVA 的抽象类与接口

    抽象类(abstract class)abstract 关键字定义的类为抽象类,同时abstract 关键字就还可以定义一个方法,还有抽象方法的类必须定义为抽象类。

    如果子类没有实现抽象类的所有抽象方法,那么这个子类也必须定义为抽象类。

     接口(interface):可以看成是抽象类的特例,接口中的所有方法都必须是抽象的(不需要使用abstract修饰);接口中的方法定义默认为public abstract类型;接口中的成员变量类型默认为public static final。

    两者应用的区别:

    1) 抽象类中可以提供某些方法的具体实现,而接口所有的方法都需要子类实现。

           有些场合更倾向于使用抽象类,而不是接口,因为这更容易扩展。而不像接口,增加一个方法时需要所有的子类都自己实现。

     2) JAVA中抽象类不能多继承,而接口可以。

     3) 使用抽象类通常是为了代码的复用,而使用接口的动机是为了实现多态性。

  抽象类 接口
默认的方法实现 它可以有默认的方法实现 接口完全是抽象的。它根本不存在方法的实现
实现 子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。 子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现
构造器 抽象类可以有构造器 接口不能有构造器
与正常Java类的区别 除了你不能实例化抽象类之外,它和普通Java类没有任何区别 接口是完全不同的类型
访问修饰符 抽象方法可以有publicprotecteddefault这些修饰符 接口方法默认修饰符是public。你不可以使用其它修饰符。
main方法 抽象方法可以有main方法并且我们可以运行它 接口没有main方法,因此我们不能运行它。
多继承 抽象方法可以继承一个类和实现多个接口 接口只可以继承一个或多个其它接口
速度 它比接口速度要快 接口是稍微有点慢的,因为它需要时间去寻找在类中实现的方法。
添加新方法 如果你往抽象类中添加新的方法,你可以给它提供默认的实现。因此你不需要改变你现在的代码。 如果你往接口中添加方法,那么你必须改变实现该接口的类。

 

 

 

 

 

 

 

 

 

 

 
    

 

posted @ 2017-08-02 15:24  yunpengli  阅读(1266)  评论(0)    收藏  举报