1.理解抽象
- 抽象的反义词:具体
- 抽象类本身就是用来表示一个不太具体的概念
- 抽象方法就更不具体,里面没有实质的实现。
- Java种使用abstract关键字来表示抽象类和抽象方法。
- abstract关键字存在的意义,就是让程序员明确的告诉编译器,这个类就是一个抽象的类,不应该进行实例化,于是编译器就要做好相关的检查。
- 像这种不需要实例化必要的类,就可以把这个类作为抽象类。
- 像这种本身没有方法体,只是为了能被子类重写的方法,就可以把这个方法做成一个“抽象方法”。
- 给这个类前面加上abstract此时这就是一个抽象类了。
- 如果尝试创建抽象类的实例,就会编译报错。
- 给方法前面加上abstract,此时这就是一个抽象方法了
- 抽象方法不需要方法体
- 抽象方法只能在抽象类中存在(也可以在接口存在),不能在普通的类中存在。
- 抽象方法存在的意义就是为了让子类进行重写。
- 抽象方法的修饰不能是private
- 抽象类的除了不能实例化之外,其他的语法规则都和普通的类一样。
- 抽象类中可以有普通的属性和方法。
- 抽象类也可以有静态的属性和方法。
- 抽象类也可以继承其他的类,也可以被其他的类继承。
Shape 类
abstract public class Shape {
public int n = 10;
public void func(){
}
abstract public void draw();
}
public class Rect extends Shape {
@Override
public void draw(){
System.out.println("□");
}
}
public class Circle extends Shape {
@Override
public void draw(){
System.out.println("⚪");
}
}
public class Main {
public static void main(String[] args) {
Shape shape1 = new Circle();
Shape shape2 = new Rect();
}
}