主要內容
1.抽象函數的語法特征.
2.抽象類的語法特征.
3.抽象類的作用.
在面向對象有一個非常非常有用的東西,先抽象,再具體.
因為抽象不容易出現錯誤
問1:什么是抽象函數
只有函數的定義,沒有函數體的函數被稱為抽象函數.
abstract void fun();
問2什么是抽象類
使用abstract定義的類被稱之為抽象類.
1.抽象類不能夠生成對象.
2.如果一個類當中包含有抽象函數,那么這個類必須聲明為抽象類.
3.如果一個類當中沒有抽象函數,那么這類也可以被聲明為抽象類.
抽象類可以有構造函數么?
條件:
1.抽象類不能生成對象.
2.構造函數用于生成類的對象.
結論: 如果從這個片面的兩點來看,抽象類沒有構造函數.
但是.抽象類可以有構造函數,這個構造是為子類服務的.
把知識橫向串列在一起,讓它為了一個目的,減少重復代碼.
總結
1.抽象函數就是沒有函數體的函數.
2.抽象類使用abstrace來定義.
3.抽象類不能生成對象,但是卻可以擁有構造函數.
這構造函數是為了子類準備的.
abstract class Person23{ String name; int age; Person23(){ System.out.println("person構造函數"); } 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構造函數"); } 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(); } }