Java抽象類

抽象類

如果一個(gè)類沒有足夠的信息來描述一個(gè)具體的對象,而需要其他具體的類來支撐它,那么這樣的類我們稱它為抽象類。比如new Animal(),我們都知道這個(gè)是產(chǎn)生一個(gè)動(dòng)物Animal對象,但是這個(gè)Animal具體長成什么樣子我們并不知道,它沒有一個(gè)具體動(dòng)物的概念,所以他就是一個(gè)抽象類,需要一個(gè)具體的動(dòng)物,如狗、貓來對它進(jìn)行特定的描述,我們才知道它長成啥樣。
在使用抽象類時(shí)需要注意幾點(diǎn):
1、抽象類不能被實(shí)例化,實(shí)例化的工作應(yīng)該交由它的子類來完成,它只需要有一個(gè)引用即可。
2、抽象方法必須由子類來進(jìn)行重寫。
3、只要包含一個(gè)抽象方法的抽象類,該方法必須要定義成抽象類,不管是否還包含有其他方法。
4、抽象類中可以包含具體的方法,當(dāng)然也可以不包含抽象方法。
5、子類中的抽象方法不能與父類的抽象方法同名。
6、abstract不能與final并列修飾同一個(gè)類。
7、abstract 不能與private、static、final或native并列修飾同一個(gè)方法。
代碼如下:

/**
 * abstract 修飾的方法,要求非抽象子類必須實(shí)現(xiàn)基類里的抽象方法
 * 只要類中存在抽象方法,要求該類必須是抽象類
 */
public abstract /*使用關(guān)鍵字修飾的類為抽象類*/class Animal {
    public void eat(){
        System.out.println("eat");
    }
    //abstract修飾的方法叫抽象方法
    public abstract void howl();
}
public class Dog extends Animal {
    @Override
    public void howl() {
        System.out.println("wang wang");
    }
    public void yao(){
        System.out.println("yao");
    }

}
public class Cal extends Animal {
    @Override
    public void howl() {
        System.out.println("miao miao");
    }
}
public class Main {

    public static void main(String[] args) {
    // write your code here
        Dog dog = new Dog();
        dog.howl();
        Animal animal = new Cal();
        animal.howl();
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容