抽象類的概念和講解

2021-08-18 19:28:34 字數 4687 閱讀 3335

/*

抽象類的概述:

動物不應該定義為具體的東西,而且動物中的吃,睡等也不應該是具體的。

我們把乙個不是具體的功能稱為抽象的功能,而乙個類中如果有抽象的功能,該類必須是抽象類。

抽象類的特點:

a:抽象類和抽象方法必須用abstract關鍵字修飾

b:抽象類中不一定有抽象方法,但是有抽象方法的類必須定義為抽象類

c:抽象類不能例項化

因為它不是具體的。

抽象類有構造方法,但是不能例項化?構造方法的作用是什麼呢?

用於子類訪問父類資料的初始化

d:抽象的子類

a:如果不想重寫抽象方法,該子類是乙個抽象類。

b:重寫所有的抽象方法,這個時候子類是乙個具體的類。

抽象類的例項化其實是靠具體的子類實現的。是多型的方式。

animal a = new cat();

*///abstract class animal //抽象類的宣告格式

abstract class animal //空方法體,這個會報錯。抽象方法不能有主體

public abstract void eat();

public animal(){}

}//子類是抽象類

abstract class dog extends animal {}

//子類是具體類,重寫抽象方法

class cat extends animal

}class abstractdemo

}

/*

抽象類的成員特點:

成員變數:既可以是變數,也可以是常量。

構造方法:有。

用於子類訪問父類資料的初始化。

成員方法:既可以是抽象的,也可以是非抽象的。

抽象類的成員方法特性:

a:抽象方法 強制要求子類做的事情。

b:非抽象方法 子類繼承的事情,提高**復用性。

*/abstract class animal

public animal(string name,int age){}

public abstract void show();

public void method()

}class dog extends animal

}class abstractdemo2

}

/*

乙個類如果沒有抽象方法,可不可以定義為抽象類?如果可以,有什麼意義?

a:可以。

b:不讓建立物件。

abstract不能和哪些關鍵字共存?

private 衝突

final 衝突

static 無意義

*/abstract class fu

}class zi extends fu

}class abstractdemo3

}

/*

貓狗案例

具體事物:貓,狗

共性:姓名,年齡,吃飯

分析:從具體到抽象

貓:成員變數:姓名,年齡

構造方法:無參,帶參

成員方法:吃飯(貓吃魚)

狗:成員變數:姓名,年齡

構造方法:無參,帶參

成員方法:吃飯(狗吃肉)

因為有共性的內容,所以就提取了乙個父類。動物。

但是又由於吃飯的內容不一樣,所以吃飯的方法是抽象的,

而方法是抽象的類,類就必須定義為抽象類。

抽象動物類:

成員變數:姓名,年齡

構造方法:無參,帶參

成員方法:吃飯();

實現:從抽象到具體

動物類:

成員變數:姓名,年齡

構造方法:無參,帶參

成員方法:吃飯();

狗類:繼承自動物類

重寫吃飯();

貓類:繼承自動物類

重寫吃飯();

*///定義抽象的動物類

abstract class animal

public animal(string name,int age)

public string getname()

public void setname(string name)

public int getage()

public void setage(int age)

//定義乙個抽象方法

public abstract void eat();

}//定義具體的狗類

class dog extends animal

public dog(string name,int age)

public void eat()

}//定義具體的貓類

class cat extends animal

public cat(string name,int age)

public void eat()

}//測試類

class abstracttest

}

/*

學生案例

具體事務:基礎班學員,就業班學員

共性:姓名,年齡,班級,學習,吃飯

分析:基礎班學員

成員變數:姓名,年齡,班級

成員方法:學習,吃飯

就業班學員

成員變數:姓名,年齡,班級

成員方法:學習,吃飯

得到乙個學員類。

成員變數:姓名,年齡,班級

成員方法:學習,吃飯

實現:學員類

基礎班學員

就業班學員

*///定義抽象學員類

abstract class student

public student(string name,int age,string grand)

public string getname()

public void setname(string name)

public int getage()

public void setage(int age)

public string getgrand()

public void setgrand(string grand)

//學習

public abstract void study();

//吃飯

public void eat()

}//具體基礎班學員類

class basicstudent extends student

public basicstudent(string name,int age,string grand)

public void study()

}//具體就業班學員類

class workstudent extends student

public workstudent(string name,int age,string grand)

public void study()

}class abstracttest3

}

/*

假如我們在開發乙個系統時需要對員工類進行設計,員工包含3個屬性:姓名、工號以及工資。

經理也是員工,除了含有員工的屬性外,另為還有乙個獎金屬性。

請使用繼承的思想設計出員工類和經理類。要求類中提供必要的方法進行屬性訪問。

分析:普通員工類

成員變數:姓名、工號以及工資。

成員方法:工作

經理類:

成員變數:姓名、工號以及工資,獎金屬性

成員方法:工作

實現:員工類:

普通員工類:

經理類:

*///定義員工類

abstract class employee

public employee(string name,string id,int salary)

public string getname()

public void setname(string name)

public string getid()

public void setid(string id)

public int getsalary()

public void setsalary(int salary)

//工作

public abstract void work();

}//普通員工類

class programmer extends employee

public programmer(string name,string id,int salary)

public void work()

}//經理類

class manager extends employee

public manager(string name,string id,int salary,int money)

public void work()

public int getmoney()

public void setmoney(int money)

}class abstracttest4

}

抽象類的概述和講解

抽象類的概述 動物不應該定義為具體的東西,而且動物中的吃,睡等也不應該是具體的。我們把乙個不是具體的功能稱為抽象的功能,而乙個類中如果有抽象的功能,該類必須是抽象類。抽象類的特點 a 抽象類和抽象方法必須用abstract關鍵字修飾 b 抽象類中不一定有抽象方法,但是有抽象方法的類必須定義為抽象類 ...

抽象類基本概念

90 正規 在以後所有進行的專案開發之中,絕對不要出現乙個類去繼承乙個已經實現好的類,而只能夠繼承抽象類和介面。物件多型性的核心本質在於方法的覆寫上,那麼如果說現在子類沒有去進行指定方法的覆寫,這樣的操作就有些不合要求的。所以如果對子類的方法進行一些強制的要求就必須採用抽象類來解決。抽象類的基本概念...

抽象類的基本概念

抽象類的基本概念 包含乙個抽象方法的類就是抽象類。抽象方法 只宣告而未實現的方法稱為抽象方法,抽象方法必須使用abstract關鍵字宣告。1 包含乙個抽象方法的類必須是抽象類。2 抽象類和抽象方法都要使用abstract關鍵字宣告。3 抽象方法只宣告不實現。4 抽象類必須被子繼承,子類 如果不是抽象...