abstract抽象

abstract:抽象

是用来修饰抽象类和抽象方法的

那么什么抽象,抽象有究竟有什么用呢??

 

我们知道,“类”是某一类具有相同特征或行为的物事,是将这些物事特征向上抽取得来的;“父类”也是子类不断向上抽取而来的。

比如人这个“类”,都有说话的功能;人“类”下有很多子类,如“中国人”、“德国人”、“法国”人,其都有各自己的语言,即说话功能各不相同。

也就是说子类的继承父类“说话”功能的同时,都有各自己特殊的说话功能,用代码表示也就是“子类说话功能会覆盖父类说话功能”。

在这样的情况下,在父类中定义说话功能就显得多余了,因为其被所有子类覆盖。

此时,父类的说话功能内容就要以去除,只保留功能定义,并用abstract(抽象)修饰。

用代码表示如下:

public class AbstractDemo {

    public static void main(String[] args) {
        new Chinese().speak();        //建立子类对象,并调用方法
    }
}

// 人都有说话的功能
abstract class People {
    abstract void speak(); // 抽象方法只定义基本功能定义,不写功能主体。主体部分由子类复写完成,由子类实现。
}

// 中国人说中文
class Chinese extends People {
    void speak() {
        System.out.println("speak Chinese");
    }

}

// 德国人说德语
class German extends People {
    void speak() {
        System.out.println("speak German");
    }
}

 

抽象类中的抽象方法,是所有子类所必备具备的,只是各子类的实现方式不一样。父类只提供基本的功能,具体怎么实现则由各子类完成。

功能不确定的,就可以用抽象来

 

抽象类的特点:
1、抽象方法一定被定义在抽象类串
2、抽象方法、抽象类必须被abstract关键字修饰
3、抽象方法不能用new创建对象,因为调用抽象方法没有意义
4、抽象类中的抽象方法要被使用,必须由子类复写其所有的抽象方法后,再建立子类对象调用。如果子类只复写了部分抽象方法,那些该子类一个抽象类

 

抽象类可以有抽象方法,也可以有非抽象方法;也可以没有抽象方法。

父类中的抽象方法,在子类中必须复写。达到父类强制子类完成其功能。

 

抽象类与一般类的区别:

无太大的区别,该如何描述事物就如何描述。只不过,该事物中出现了一些不确认的东西。这些不确认的东西,也是访一事物的功能,需要确认体现,但无法定义功能主体。

抽象类比一般类多了抽象方法。

抽象类不能被实例化。

posted @ 2017-02-24 16:07  自学开发的老司机  阅读(846)  评论(0编辑  收藏  举报