主要內(nèi)容
1.抽象函數(shù)的語法特征.
2.抽象類的語法特征.
3.抽象類的作用.
在面向?qū)ο笥幸粋€(gè)非常非常有用的東西,先抽象,再具體.
因?yàn)槌橄蟛蝗菀壮霈F(xiàn)錯(cuò)誤
問1:什么是抽象函數(shù)
只有函數(shù)的定義,沒有函數(shù)體的函數(shù)被稱為抽象函數(shù).
abstract void fun();
問2什么是抽象類
使用abstract定義的類被稱之為抽象類.
1.抽象類不能夠生成對象.
2.如果一個(gè)類當(dāng)中包含有抽象函數(shù),那么這個(gè)類必須聲明為抽象類.
3.如果一個(gè)類當(dāng)中沒有抽象函數(shù),那么這類也可以被聲明為抽象類.
抽象類可以有構(gòu)造函數(shù)么?
條件:
1.抽象類不能生成對象.
2.構(gòu)造函數(shù)用于生成類的對象.
結(jié)論: 如果從這個(gè)片面的兩點(diǎn)來看,抽象類沒有構(gòu)造函數(shù).
但是.抽象類可以有構(gòu)造函數(shù),這個(gè)構(gòu)造是為子類服務(wù)的.
把知識橫向串列在一起,讓它為了一個(gè)目的,減少重復(fù)代碼.
總結(jié)
1.抽象函數(shù)就是沒有函數(shù)體的函數(shù).
2.抽象類使用abstrace來定義.
3.抽象類不能生成對象,但是卻可以擁有構(gòu)造函數(shù).
這構(gòu)造函數(shù)是為了子類準(zhǔn)備的.
abstract class Person23{ String name; int age; Person23(){ System.out.println("person構(gòu)造函數(shù)"); } Person23(String name ,int age){ this.name = name; this.age = age; } void introduce(){ System.out.println("名字是" +name+age); } abstract void eat(); }
//這樣可以能過編譯. //abstract class Chinese extends Person23{ // //} //這樣可能通過編譯. class Chinese extends Person23{ Chinese(){ System.out.println("chinese構(gòu)造函數(shù)"); } Chinese(Sting name,int age ,String address){ super(name,age); this.address = address; } void eat(){ System.out.println("用筷子吃飯"); } }
class TestChinese{ public static void main(String args[]){ Person23 p = new Chinese(); p.eat(); } }