接口、抽象类和类之间的关系


仅能继承单个父类;可以实现多个接口。这是Java实现其多态性的重要手段,也涵盖了接口、抽象类和类之间的关系


基本特性


1.接口

接口的属性有字段和方法组成,没有构造函数的原因:接口是用来被子类继承实现多态性的,是不能被实例化的


    1. 属性:仅能被public、static、final修饰,不能被private、protected、volatle、transient、strictfp和synchronized修饰

    2. 在方法的定义上JDK1.7和JDK1.8有了很大的区别

         - JDK1.7:接口中的方法必须全部为抽象方法,此时的接口可以看成特殊的抽象类

            接口中抽象方法的定义:

//和抽象类中抽象方法允许public和protected修饰不同,接口中的抽象方法仅允许public修饰
//protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部
//class,protected就变成private,不符合接口开放设计原则
public abstract void method();

         - JDK1.8:相比较与JDK1.7有了两点最大的改变(全部基于可以定义代码实现的方法)

            可以定义多个静态非抽象的方法

//修饰符同样只需要public
public static void method(){
    //do something
}

            可以定义多个默认方法

//必须default关键字进行修饰
public default void method(){
    //do something
}

Tip:JDK1.8,接口的方法必须全部是public修饰的,static、abstract、default修饰专门的方法,不能混合使用


2.类

类的属性由字段、方法、构造函数、代码块和静态代码块组成


    1. 字段

public static final String field = "this is field property";

    2. 方法

public void method(){
    //do something
}

    3. 构造函数

public Constructor(){
    //do something
}

    4.代码块,定义在类内部,方法外;实例被创建的时候,代码被执行

{
    //do something
}

    5.静态代码块,定义在类内部,方法外;类被加载的时候,代码被执行

static{
    //do something
}

3.抽象类

抽象类的属性主要由字段、方法、构造函数、代码块和静态代码块组成。

抽象类的属性大致和类的定义规则是一样的,除了方法,抽象类的方法允许定义抽象方法(没有代码实现的方法)

//abstract关键字是定义抽象类和定义抽象方法的标识
//抽象方法只允许用可见的修饰符public和protected修饰
public abstract void method();

关系


1.接口和类

    - 类可实现多个接口


2.接口和抽象类

    - 抽象类也可使实现多个接口

    - 抽象类最大的好处就是可以实现多个接口,但不必实现全部的接口方法,在做模块化设计的时候很有用


3.抽象类和类

     - 类只能继承一个抽象类,类只能继承一个抽象类

    - 比较特殊的是超类Object,Java中所有的类都继承与此类,我们可以重写(@Override)Object的方法


4.接口和接口

     - 接口可以继承多个接口,用逗号隔开,接口实现类必须实现所有接口的方法

    - 从另外一个角度解决了类的单继承的问题


Tip:各个阶段的理解可能不一样,后续会更改和补充

你可能感兴趣的:(JDK)