视频学习地址
前言
abstract修饰符可以用来修饰方法也可以用来修饰类,如果修饰方法,那么这个方法就是抽象方法,如果修饰类,那么这个类就是抽象类。
- 抽象类中可以没有抽象方法,但是抽象方法中的类,一定要声明为抽象类
- 抽象类不能使用new关键字来创建对象,而是用子类来继承
- 抽象方法只有方法的声明,没有方法的实现,而是用子类来实现
- 子类继承抽象类,那么就必须实现抽象类没有实现的抽象方法,否则子类也要声明为抽象类
public class Application {
public static void main(String[] args) {
//new Person(); 报错,因为这是个抽象的类,不能被实例化
Person p = new Student();
p.say();
}
}
public abstract class Person { //抽象类
//不能new这个抽象类,只能靠子类去实现它
//抽象类中可以写普通的方法
//抽象方法必须在抽象类中
//是一个约束,不想自己写,有人帮我们实现
public abstract void say(); //抽象方法,只有方法名字,没有方法的实现
}
public class Student extends Person{
//extends(类)只能单继承,而接口可以多继承
//抽象类的所有方法,继承的子类,必须实现父类的方法,除非子类也声明为抽象类
@Override
public void say() {
System.out.println("hello");
}
}
抽象类中也是存在构造器的,抽象类存在的意义也是提高开发效率。