抽象类,interface接口,接口和继承的区别

一、抽象类

需要抽象类的原因:父类方法不确定性的问题、考虑将该方法设计为抽象(abstract)方法所谓抽象方法就是没有实现的方法、所谓没有实现就是指,没有方法体、当一个类中存在抽象方法时,需要将该类声明为abstract类

1、抽象类的介绍:

 

 2、抽象类使用的注意事项和细节

1)抽象类不能被实例化
2)抽象类不一定要包含abstract方法。 也可以有实现的方法、也就是说,抽象类可以没有abstract方法
3)一旦类包含了abstract方法,则这个类必须声明为abstract 
4) abstract只能修饰类和方法,不能修饰属性和其它的。

5)抽象类可以有任意成员【本质上抽象类还是类】

6)抽象方法不能又主体,既不能实现。

7)如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为abstract类。

8)抽象方法不能使用private、final和static来修饰,因为这些关键字都是和重写相违背的。

 二、接口(interface):接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,在根据具体情况把这些方法写出来;

使用方法:

 

 注意:在jdk7.0前,接口里所有方法都没有方法体,即都是抽象对象。

在jdk8.0后接口可以有静态方法,默认方法,也就是说接口中可以有实现的具体方法

1、interface本身就是一个抽象类,接口不能被实例化

2、接口中所有方法都是public方法,接口中抽象方法,可以不用abstract修饰

3、一个普通类实现接口,就必须将该接口的所有方法都实现

4、抽象类实现接口可以不实现接口方法

5、一个类可以实现多个接口

6、接口中的属性,只能是final的,而且是public 、static、final修饰符

例如:int a = 1;实际上 public static final int a = 1;(必须初始化)

7、接口中的属性访问:(接口名.属性名)

8、接口不能继承其他的类,但是可以继承多个别的接口

9、接口的修饰符只能是 public和默认,这点和类的修饰符是一样的。

三、接口和继承的区别

1、实现接口可以理解为是java对单继承的补充;

2、当子类继承父类,就自动拥有父类的功能,方法;

3、如果子类需要扩展功能,可以通过实现接口的方式扩展

解决的问题不同:

继承的价值主要在于:解决代码的复用性和可维护性。
接口的价值主要在于:设计,设计好各种规范(方法),让其它类去实现这些方法;

接口比继承更加灵活:接口比继承更加灵活,继承是满足is - a的关系,而接口只需满足like - a的关系。

接口在一定程度上实现代码解耦[即:接口规范性+动态绑定]

 四、接口的多态与继承的多态类似

 

posted @ 2021-07-17 10:53  代码红了一大片  阅读(432)  评论(0编辑  收藏  举报