java中抽象类(abstract class)和接口(interface)

来源:互联网 发布:重庆时时彩组号软件 编辑:程序博客网 时间:2024/05/17 03:13
  1. 抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。
  2. 一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。反之,一个全部实现了的类也可以是抽象类:比如将一些含有相同方法的类的相同方法抽取到父类中,而这些类又有不同的方法,此时父类就可能是完全实现的,没有必要为所有子类的方法留接口,因为不同子类的方法可能本身就不同,这样父类被设置为抽象类从而不可实例化;另外一种情况,父类既有实现的方法也有没有实现的方法,此时让子类去重写父抽象类没有实现的方法,这时子类都有这些方法。
  3. 接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法。
  4. 抽象类中的成员可以是private、默认、protected、public的,而接口中的成员全都是public的。
    但是抽象类中未实现的方法必须是public或protected

    abstract class c1{    private abstract int fuc();}报错:The abstract method fuc in type c1 can only set a visibility modifier, one of public or protected

    接口或者抽象类没有实现的方法不添加修饰符时都默认为public。

  5. 抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量。
  6. 有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法。正如第2点中举例。
  7. 接口不可继承抽象类,抽象类可实现多个接口。接口与接口之间是继承,用extends,可继承多个接口。

    interface itf extends Collection, Comparable{}abstract class c implements Collection, Comparable{}

面试题:接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class)?
答:接口可以继承接口,而且支持多重继承。抽象类可以实现(implements)接口,抽象类可继承具体类也可以继承抽象类。

0 0