抽象类与抽象方法
关键字:abstract ,abstract可以修饰方法和类
abstract修饰类(抽象类):
1、抽象类不能被实例化
2、抽象类有没有构造器?
有,因为子类对象的实例化过程(子类要调用父类中的构造器), 抽象类的父类可以是抽象类,也可以是非抽象类
3、非抽子象类继承抽象类后必须重写抽象父类中的所有抽象方法
4、如果非抽象子类不想重写抽象父类中的抽象方法,那么该子类也需要变成抽象子类
5、抽象子类重写抽象父类中的抽象方法, 如果直接抽象父类重写了间接抽象父类中的抽象方法那么非抽象子类就不需要再重写该 抽象方法
abstract修饰方法(抽象方法): 1、抽象方法没有方法体 2、抽象方法所在的类为抽象类
抽象类———— 1、抽象方法所在的类必须为抽象类 2、抽象类不能被实例化
abstract class Math {
abstract public void info();
}
abstract class GeometricObject extends Math{
//几何图形
public GeometricObject(){
System.out.println("GeometricObject");
}
/*
抽象子类重写抽象父类中的抽象方法,
如果直接抽象父类重写了间接抽象父类中的抽象方法那么非抽象子类就不需要再重写该抽象方法
*/
public void info(){}
//抽象方法————没有方法体
public abstract double findArea();
}
/*抽象子类 VS 非抽象子类
1、非抽子象类继承抽象类后必须重写抽象父类中的所有抽象方法
2、如果非抽象子类不想重写抽象父类中的抽象方法,那么该子类也需要变成抽象子类
*/
class Circle extends GeometricObject{
public double findArea(){
return 0;
}
}
public class AbstractTest {
public static void main(String[] args) {
}
}