您的位置:首页 > 编程语言 > Java开发

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

2017-08-07 20:01 351 查看
仅能继承单个父类;可以实现多个接口。这是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:各个阶段的理解可能不一样,后续会更改和补充
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 继承 多态