- 抽象类:
[public] abstract class ClassName {
// 抽象方法
abstract void fun();
}
- 抽象类必须在类前用
abstract
关键字修饰 - 抽象方法必须用
abstract
关键字进行修饰(抽象方法只有声明,没有实现) - 抽象类中可以有变量或具体方法
- 抽象方法必须为
public
或者protected
(因为如果为private
,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public
。 - 抽象类不能用来创建对象;
- 如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为
abstract
类。
- 接口:
[public] interface InterfaceName {
// ...
}
// 接口中可以有多继承,是java中唯一可以多继承的地方
[public] interface InterfaceName extends 接口1,接口2... {
// ...
}
- 变量会被隐式地指定为
public static final
变量,并且只能是public static final
变量,用private
修饰会报编译错误 - 方法会被隐式地指定为
public abstract
方法且只能是public abstract
方法(用其他关键字,比如private
、protected
、static
、final
等修饰会报编译错误) - 接口中所有的方法不能有具体的实现,也就是说,接口中的方法必须都是抽象方法
可以把接口理解成是一种极度抽象的类型,它比抽象类更加“抽象”
接口中不能使用implements
, 但是可以使用extends
继承多个接口,是java中唯一可以多继承的地方