抽象方法:
- 只声明未实现的方法
- 必须abstract关键字声明(接口中的抽象方法可以省略abstract关键字,默认是抽象方法)
抽象类:
- 抽象类,用来表示抽象的概念.
- 是一种只能定义类型,而不能产生对象的类,所以定义了抽象类则必须有子类的出现.
- 抽象类的好处在于能够明确地定义子类需要覆盖的方法.
- 抽象类需要使用abstract声明.
- 抽象类里可以实现抽象方法,该方法特征在于:只有声明,并没有方法体.
- 抽象类中可以有属性、普通方法、抽象方法(num>=0).
- 子类继承父类,必须重写全部的父类抽象方法,除非这个类也变成了抽象类.
- 抽象类可以存在构造方法,用来初始化抽象类的属性。
- 抽象类不能使用final定义。
抽象类与抽象方法的关系:
抽象类可以没有抽象方法,但是如果你的一个类已经声明成了抽象类,即使这个类中没有抽象方法,它也不能再实例化,即不能直接构造一个该类的对象。
如果一个类中有了一个抽象方法,那么这个类必须声明为抽象类,否则编译通不过。
接口(通常interface来声明)
- 接口是一种抽象类型,但并不是一个抽象类,是抽象方法的集合
- 接口没有构造方法,不能用于实例化对象。
- 接口中所有方法都必须是抽象的。(1.8之后允许接口定义非抽象方法)
- 接口中方法定义默认为public abstract类型,成员变量默认为public static final 类型。(如果省略,系统会默认补全)。
- 实现类可以使用implements实现接口,而且可以实现多个接口,但实现类只能extends继承一个类。