Java-Day13-抽象类和接口

一、抽象类和接口

什么是抽象类?

当子类继承父类后,父类中所写的方法没有实际工作,而由子类中重写的同名方法工作,此时我们可以把它设计成一个抽象方法(abstract method),包含抽象方法的类就叫做抽象类(abstract class).
(注: 抽象方法是由abstract 所修饰的方法,该方法不能具体实现.)

语法规则:

1.抽象类不能进行实例化,想要使用,只能创建该抽象类的子类,然后让子类重写抽象类中的抽象方法.

2.在抽象类中可以有和普通类一样的数据成员和方法,其方法可以被重写,也可以被子类直接调用.

3.抽象类是可以被继承的,可以发生向上转型等等.

4.当一个普通类继承了一个抽象类,那么当前这个普通类一定要重写抽象类当中的抽象方法.

5.当普通类继承了一个抽象类,而不想实现抽象类当中的抽象方法时,那么这个普通类可以被修改为抽象类(abstract修饰)此时就不需要进行实现了,当然,也可以实现.

6.如果一个普通类B继承了抽象类A,此时就要实现这个抽象方法了(抽象方法最终还是要被实现的).

7.抽象方法不能是private修饰的,因为抽象方法就是用来被重写的.

抽象类的作用:

抽象类存在的最大意义就是为了被继承.

什么是接口?

接口是抽象类的更进一步.抽象类中还可以包含非抽象方法和字段.而接口中包含的方法都是抽象方法,字段只能包含静态常量.

语法规则:

1.使用interface定义一个接口.

2.接口中的方法一定是抽象方法(不可以具体实现),因此可以省略abstract.

3.接口中的方法一定是public,因此可以省略public.

4.接口不能被单独实例化.

5.接口的命名一般以大写字母I开头.

6.接口当中的成员变量默认是 public static final 所修饰的.

7.JDK1.8引入的新特性:default修饰的方法—默认方法,可以有具体的实现.

8.类和接口之间的关系是 implements.

9.一个类可以实现多个接口.

10.一个类可以继承一个类,同时可以实现多个接口.

11.接口可以扩展(extends)一个或多个接口.

接口的意义:

解决java多继承问题.(java是单继承的)

总结: 抽象类和接口都是java中多态的常见使用方式.

核心区别: 抽象类中可以包含普通方法和普通字段,这样的普通方法和字段可以被子类直接使用(不必重写),而接口中不能包含普通方法,子类必须重写所有的抽象方法.

区别

1、抽象类描述的是“是不是”的问题,而接口描述的是“有没有”的问题;接口强调特定功能的实现,而抽象类强调所属关系。
2、接口只有定义,不能有方法的实现,而抽象类可以有定义与实现,方法可在抽象类中实现。
3、实现接口的关键字为implements,继承抽象类的关键字为extends。一个类可以实现多个接口,但一个类只能继承一个抽象类。所以,使用接口可以间接地实现多重继承。
4、接口成员变量默认为public static final,必须赋初值,不能被修改;其所有的成员方法都是public、abstract的。抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值;抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。
5、接口被用于常用的功能,便于日后维护和添加删除,而抽象类更倾向于充当公共类的角色,不适用于日后重新对立面的代码修改。功能需要累积时用抽象类,不需要累积时用接口。

猜你喜欢

转载自blog.csdn.net/weixin_43901457/article/details/112915458
今日推荐