java abstract 关键字 抽象类 抽象方法 的使用详解
1.关键字
- 关键字abstract:抽象的,可以用来修饰类、修饰方法
2.抽象类
- 随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用。类的设计应该保证父类和子类能够共享特征,有时将父类设计得非常得抽象以至于它没有具体的实例,这样的类就叫做抽象类。也可以总结为:抽象类是用来模型化那些父类无法确定全部实现,而是由其子类提供具体实现的对象的类。
- 抽象类使用需注意的点
①不可被实例化
②抽象类有构造器(凡是类都有构造器)
③抽象方法所在的类,一定是抽象类
④抽象类中可以没有抽象方法。
3.抽象方法
- 抽象类中只表明方法,没有方法体的方法,主要用于声明方法功能,交由子类去重写(覆盖),实现去其功能。
- 抽象方法使用需注意的点
①格式:没有方法体,包括{};如:public abstract void eat();
②抽象方法只保留方法的功能,而具体的执行,交给继承抽象类的子类,由子类重写此抽象方法
③若子类继承抽象类,并重写了所有的抽象方法,即这个子类是一个“实体类”,即可以实例化
④若子类继承抽象类,没有冲写所有的抽象方法,意味着子类仍有抽象方法,则声明必须为abstract的!
3.demo
public class TestAbstract {
public static void main(String[] args) {
Student s1 = new Student();
s1.eat();
Person p = new Student();
p.eat();
}
}
abstract class Person{
String name;
public abstract void eat();
public abstract void walk();
public Person() {
}
public void sleep() {
}
public Person(String name) {
this.name = name;
}
}
class Student extends Person{
public void eat() {
System.out.println("student eat");
}
public void walk() {
System.out.println("student walk");
}
}
abstract class Worker extends Person{
public void eat() {
System.out.println("worker eat");
}
}
4.abstract不能用来修饰属性、构造器、private、final、static
- dome
abstract class A{
}