代码改变世界

面向对象深入:继承03——抽象类

2018-01-15 16:41  Jolene_Wu  阅读(158)  评论(0)    收藏  举报

11.4 抽象类——只能作为父类存在,天生当爸爸的

抽象类不同于一般的类,它不能生成对象,只能作为父类存在。

抽象类具有高度抽象的特征,为所有子类提供统一的抽象方法

11.4.1 创建抽象类——关键字abstract

abstract所修饰的类为抽象类。

抽象类是只有定义而无法实现对象的类。

抽象类中只关心所应实现的功能。

abstract class Dog
{
    //抽象类类体
}

抽象类无法产生对象,下面的语句是错误的
Dog d = new Dog();

11.4.2 抽象方法

abstract 修饰的方法为抽象方法。

抽象方法在形式上仅有方法的方法头部分,没有方法体

abstract void out();

抽象方法是只定义了功能而未能具体实现的方法,这决定了抽象方法只能在父类派生子类时才能通过覆盖实现

******

抽象类中可以没有抽象方法,但抽象方法所在的类必须是抽象类。

******

如果由抽象类派生出一个非抽象的子类,因为非抽象子类可以创建对象,所以在子类中必须覆盖掉父类(抽象类)中所有的抽象方法,否则,只能将子类定义为抽象类。

******

public class Example1108
{
    public static void main(String[] args)
    {
        SonClass sc = new SonClass();
        sc.out();
    }
}

abstract class SuperClass    //抽象类
{
    abstract void out();
}

class SonClass extends SuperClass    //子类继承抽象父类
{
    public void out()                    //子类实现父类的抽象方法
    {
        System.out.println("SonClass");
    }
}

我们在写大型程序时,一般先设计最顶层、最抽象的类和方法,然后逐步实现细节化的类和方法。这种设计方法由粗到细,容易分析和理解。