抽象方法和抽象类
抽象方法和抽象类
在类中没有方法体(有花括号“{}”)的方法,就是抽象方法。
含有抽象方法的类,一定是抽象类。
抽象类中的抽象方法应该由子类去实现,如果一个子类没有实现抽象基类中的所有的抽象方法,则子类也应该被声明为抽象类。例如:
public abstract class Car { // 用abstract声明抽象类
public abstract void run();//在类中没有方法体的方法是抽象方法
}
class Bus extends Car {
public abstract void run(){// todo something}
}
在抽象类中可以有非抽象的方法。这个也就是抽象类的最大优点。子类并不需要实现它,但是可以重写。
抽象类是不能被实例化的。因此可以将一个没有任何抽象方法的类声明为abstract,避免由这个类产生任何的对象。
子类实现方法的访问权限不能低于父类的抽象方法的访问权限。例如:
public class Car {
public void fn() {}// 访问权限为public
}
class Bus extends Car {
void fn() {}// 访问权限为default
}