抽象方法和抽象类

                      抽象方法和抽象类

在类中没有方法体(有花括号“{}”)的方法,就是抽象方法。
含有抽象方法的类,一定是抽象类。
抽象类中的抽象方法应该由子类去实现,如果一个子类没有实现抽象基类中的所有的抽象方法,则子类也应该被声明为抽象类。例如:

public abstract class Car { // 用abstract声明抽象类
public abstract void run();//在类中没有方法体的方法是抽象方法
}

class Bus extends Car {
public abstract void run(){// todo something}
}
声明抽象类和抽象方法都是使用abstract进行声明,

在抽象类中可以有非抽象的方法。这个也就是抽象类的最大优点。子类并不需要实现它,但是可以重写。

抽象类是不能被实例化的。因此可以将一个没有任何抽象方法的类声明为abstract,避免由这个类产生任何的对象。

子类实现方法的访问权限不能低于父类的抽象方法的访问权限。例如:

public class Car {
public void fn() {}// 访问权限为public
}
class Bus extends Car {
void fn() {}// 访问权限为default
}
编译时异常:Car.java: Bus 中的 fn() 无法覆盖 Car 中的 fn();正在尝试指定更低的访问权限;为 public

posted @ 2010-12-21 12:51  meng72ndsc  阅读(244)  评论(0编辑  收藏  举报