面向?qū)ο蟮娜筇匦?/h5>
- 封裝
- 繼承
- 多態(tài)
1.封裝
之前學(xué)習(xí)的構(gòu)造函數(shù)與set、get訪問(wèn)器函數(shù)都是在進(jìn)行封裝。我們?cè)陬?lèi)中聲明的函數(shù)方法也都是在進(jìn)行一些功能的整合。這些就是封裝。
2. 繼承
繼承(加上封裝和多態(tài)性)是面向?qū)ο蟮木幊痰娜齻€(gè)主要特性(也稱(chēng)為“支柱”)之一。 繼承用于創(chuàng)建可重用、擴(kuò)展和修改在其他類(lèi)中定義的行為的新類(lèi)。
其成員被繼承的類(lèi)稱(chēng)為“基類(lèi)”,繼承這些成員的類(lèi)稱(chēng)為“派生類(lèi)”。 派生類(lèi)只能有一個(gè)直接基類(lèi)。 但是,繼承是可傳遞的。 如果 ClassB 派生出 ClassC,ClassA 派生出 ClassB,則 ClassC 會(huì)繼承 ClassB 和 ClassA 中聲明的成員。
思考
題目一:
老師、學(xué)生的類(lèi)。
老師有名字、性別、年齡、所帶班級(jí)、教的科目, 老師可以教學(xué)生學(xué)習(xí),老師可以用電腦, 老師可以吃飯。
學(xué)生有名字、性別、年齡、所在班級(jí),學(xué)生可以學(xué)習(xí),還可以用電腦,還可以吃飯。
思路:
在看這道題的時(shí)候,首先先看共同的屬性,可不可以抽出一個(gè)基類(lèi),然后再去繼承這個(gè)基類(lèi)。
1. 顯而易見(jiàn),我們可以定義一個(gè)Person類(lèi),具有名字、性別、年齡這些字段,還有吃飯、用電腦這兩個(gè)方法。
2. 老師的類(lèi)繼承自Person類(lèi),只需要添加教的科目、所帶的班級(jí)的字段,和教學(xué)生的方法。
3. 學(xué)生繼承自Person類(lèi),只需要添加一個(gè)所在班級(jí)的字段,和學(xué)習(xí)的方法。
代碼上手 :
- 基類(lèi)
namespace 繼承
{
enum gender
{
boy,
girl
}
class Person
{
public string name;
public int age;
public gender gender;
public void eat()
{
Console.WriteLine("我在吃東西");
}
public void playComputer()
{
Console.WriteLine("我在用電腦");
}
}
}
- 老師類(lèi)
namespace 繼承
{
class Teacher : Person
{
public string className;
public string subjectName;
public void teach()
{
Console.WriteLine("教學(xué)生學(xué)習(xí)");
}
}
}
- 學(xué)生類(lèi)
namespace 繼承
{
class Student : Person
{
public string inClassName;
public void learn()
{
Console.WriteLine("學(xué)生正在學(xué)習(xí)");
}
}
}
3.多態(tài)
派生類(lèi)中詳細(xì)解釋?zhuān)聪乱黄┛图纯芍獣?/p>