Java基础篇-抽象类和接口

一、抽象类

(一)什么是抽象类?

包含抽象方法的类称为抽象类,但并不意味着抽象类中只有抽象方法
它和普通类一样,可以拥有成员变量和普通的成员方法。

(二)抽象类和普通类的主要区别

1.抽象方法必须为public或protected,原因:若为private,则该方法不能被子类继承,子类便不能重写该方法。
2.抽象类不能用来创建对象。
3.一个类若继承于一个抽象类,则需要重写父类(抽象类)的抽象方法,否则该类也须定义为abstract类。

(三)抽象类定义抽象方法的好处

1.约束子类方法名的统一。
2.阅读中大型项目时可先查看抽象类和接口,可快速了解项目大纲。
3.相近项目中可以共用。

二、接口

(一)什么是接口?

接口是具有一定功能和约束的特殊类,接口为其他具体类提供了一些不是类本身的特定的功能。接口是一种更加抽象的抽象类,一般情况下,在接口中不定义变量。
接口中可以含有变量和方法:
1.变量只能是public static final变量,即常量。
2.方法只能是public abstract方法,默认的。若为protected或private方法,则编译报错。即方法不能具体化,只能是抽象方法。

(二)接口的实现

一个类可遵循实现多个接口。若一个普通类遵循了一个或多个接口,就必须实现接口中的所有方法。若是抽象类遵循了接口,可实现也可不实现接口的方法。
接口也可以继承(一个或多个)接口。

(三)接口与抽象类的区别

1.抽象类中可以含有非抽象方法;接口只有抽象方法。
2.抽象类中的成员变量类型可以是各种类型;接口只能定义常量。
3.抽象类可以含有静态代码块和静态方法;接口不能含有静态代码块和静态方法。
4.一个类可以实现多个接口;一个类只能继承于一个抽象类。

(四)接口与抽象类的相同点

1.都不能被实例化。
2.都能被继承(或实现)。
3.被继承(或实现),子类(或实现类)都需要重写抽象方法。

你可能感兴趣的:(#,JAVA基础篇,Java,抽象类,接口)