为什么使用抽象
当父类知道子类需要什么方法,当不知道方法具体会如何实现时,允许父类只声明方法,而具体的功能实现交给子类完成。
例如:一个图形类为父类,此类中有打印图形面积的方法findArea(),但不同的图形会有不同的公式,此时父类中的findArea方法不需要写方法体。
抽象方法:
- 访问控制修饰符 abstract 返回值类型 方法名(参数列表)
- 子类继承抽象的父类后,要重写父类中所有的抽象方法才是一个具体类,若有一个或多个抽象类没有被重写,子类也必须得是一个抽象类
抽象类:
-
abstract class 类名{}
-
抽象类: 有至少一个抽象方法的类,此类就必须得声明称抽象类
-
可以没有抽象方法
-
可以声明构造器(供子类继承用)
-
但不能创建实例
注意:
abstract和 static,final,private不能同时用
我自己总结就是
abstract就是为了有自己特有的方法体,static是为了共享,所有的都用一样的。
final:修饰的类不能被继承,修饰的方法不能被重写,修饰的变量不能改值,abstract就是为了让人家改的,这俩就相斥。
private修饰符作用范围就是本类,所以父类中private修饰的方法子类不能访问,也就不能重写,就像一个父亲藏了私房钱,儿子根本不知道,虽然可以继承,但是没法使用。
abstract class Person(){
public abstract void say();
}
class son extends Person{
public void say(){
//重写say方法
}
}