abstract ——抽象
- 有两种描述:抽象类和抽象方法。
抽象类:
- 在继承中,提取父类的方法的时候,每个子类都有自己的具体的实现方式,父类不能决定他们各自的实现方式,所以在父类中只写方法的声明,将方法的实现交给子类,在类中,只有方法声明的方法称为抽象方法,拥有抽象方法的类叫抽象类
注意:
- 抽象类不一定有抽象方法,但是有抽象方法的一定是抽象类。
- 继承了抽象类的子类,一定要实现抽象方法,如果不实现,就只能将自己也变为抽象类。
- 抽象类不能直接创建对象,必须通过子类实现,所以抽象类一定有子类
不能与abstract同时存在的关键字:
- final:被final 修饰的类不能有子类,方法不能重写,但是abstract必须有子类,必须重写。
- static:修饰的方法可以通过类名直接调用,abstract必须通过子类实现。
- private:修饰的方法不能重写,abstract必须重写
public class Demo15 {
/*
* 方法的声明:没有方法体的方法。
*/
public static void main(String[] args) {
//抽象类不能直接创建对象,必须通过子类实现功能
//Person2 person2 = new Person2();
}
}//抽象类,拥有抽象方法的一定是抽象类
abstract class Person2{
String name;
//抽象方法:没有方法体——相当于制定了一个规则
public abstract void teach();
}
//可以将子类变成抽象的,但是要想使用当前的类,就必须再创建子类,因为抽象类不能直接创建对象。
class Teacher extends Person2{
public void teach() {
}
}