日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

第六章:继承和多态

發(fā)布時(shí)間:2024/4/15 编程问答 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第六章:继承和多态 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一:本章目標(biāo)

①:理解繼承的概念

②:使用繼承建立父類(lèi)和子類(lèi)以及繼承的傳遞性、單根性

③:訪(fǎng)問(wèn)修飾符

④:多態(tài)的概念

⑤:會(huì)使用虛方法實(shí)現(xiàn)多態(tài)

?

二:所謂繼承:

在C#中,如果一個(gè)類(lèi)后面通過(guò)冒號(hào)又跟了另外一個(gè)類(lèi),那么我們就稱(chēng)冒號(hào)前面的類(lèi)為子類(lèi),冒號(hào)后面的類(lèi)為父類(lèi)。這種書(shū)寫(xiě)類(lèi)的方式放映出來(lái)的關(guān)系就稱(chēng)為類(lèi)的繼承關(guān)系。

?

1、子類(lèi):派生類(lèi)

父類(lèi):基類(lèi)或者超類(lèi)

2、滿(mǎn)足什么條件的類(lèi)可以使用繼承??

滿(mǎn)足is a關(guān)系的兩個(gè)類(lèi)可以使用繼承。

例如:

?

? ? ?經(jīng)理is a a?員工

?

?????程序員 ?is a?員工

?

?????學(xué)生?is ?a Person

?


繼承的優(yōu)點(diǎn):減少代碼冗余,實(shí)現(xiàn)代碼復(fù)用

?

☆繼承模式下子類(lèi)構(gòu)造,背后到底發(fā)生了什么???

eg:

創(chuàng)建出Animal(父類(lèi))、Dog(子類(lèi))

關(guān)鍵代碼如下:

父類(lèi):

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace Chap06 {public class Animal{//定義自動(dòng)屬性 年齡和姓名public int Age { get; set; }public string Name { get; set; }//無(wú)參構(gòu)造public Animal(){ }//帶參構(gòu)造public Animal(int age,string name){this.Age = age;this.Name = name;}} }

子類(lèi):

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace Chap06 {public class Dog:Animal{public string Color{ get; set; }//無(wú)參構(gòu)造public Dog(){ }//帶參構(gòu)造public Dog(int age,string name,string color){this.Age = age;this.Name = name;this.Color = color;}public void Eat(){Console.WriteLine("Dog Eat Meat Very Happy!");}} }

Main方法:

namespace Chap06 {class Program{static void Main(string[] args){//創(chuàng)建Dog對(duì)象Dog dog = new Dog();//調(diào)用子類(lèi)中的Eat()方法dog.Eat();Console.ReadKey();}} }

解析:

如果我們想構(gòu)建一個(gè)子類(lèi)對(duì)象...

1、進(jìn)入子類(lèi)構(gòu)造方法名,但不進(jìn)入子類(lèi)構(gòu)造的方法體

2、跳轉(zhuǎn)到父類(lèi)構(gòu)造方法名,接下來(lái)執(zhí)行父類(lèi)構(gòu)造的方法體

3、父類(lèi)方法體執(zhí)行完畢,跳轉(zhuǎn)到子類(lèi)方法體執(zhí)行

4、子類(lèi)方法體執(zhí)行完畢,跳轉(zhuǎn)到Main函數(shù),代表子類(lèi)對(duì)象創(chuàng)建過(guò)程

?

?

注:繼承關(guān)系在類(lèi)圖中表示為一個(gè)箭頭,箭頭指向的是父類(lèi)。

子類(lèi)可以繼承父類(lèi)的非私有成員

一個(gè)子類(lèi)只能有一個(gè)直接父類(lèi)

子類(lèi)構(gòu)造默認(rèn)會(huì)調(diào)用父類(lèi)的無(wú)參構(gòu)造

三:base關(guān)鍵字

解析:

①:父類(lèi)的實(shí)例

②:看成是調(diào)用父類(lèi)的構(gòu)造,只出現(xiàn)在子類(lèi)構(gòu)造后面

③:base(參數(shù)列表)父類(lèi)帶參構(gòu)造的參數(shù)列表一致

④:相當(dāng)于方法調(diào)用,不帶有數(shù)據(jù)類(lèi)型

?

四:訪(fǎng)問(wèn)修飾符

①:Public:任何位置都能訪(fǎng)問(wèn)(方法,成員變量,類(lèi))

②:Private:只能當(dāng)前類(lèi)自身訪(fǎng)問(wèn),出了類(lèi)所在{}無(wú)法訪(fǎng)問(wèn)(方法,成員變量)

③:Protected:當(dāng)前類(lèi)和子類(lèi)能訪(fǎng)問(wèn)及子類(lèi)的子類(lèi)(孫子類(lèi))(方法以及變量)

④:Internal:只能在當(dāng)前程序集中使用

三種訪(fǎng)問(wèn)修飾符對(duì)類(lèi)成員的訪(fǎng)問(wèn)限制強(qiáng)度:Private>Protected>Public

五:繼承的特性:

①:傳遞性:

如果一個(gè)類(lèi)B繼承自類(lèi)A,而類(lèi)C又繼承類(lèi)B,那么類(lèi)C也可以訪(fǎng)問(wèn)到類(lèi)A中非私有成員

?

②:單根性(C#不支持多繼承?Java也不支持多繼承)

?

?

六:繼承的價(jià)值

01.模擬現(xiàn)實(shí)世界的關(guān)系

02.便于重用和擴(kuò)展已徹底測(cè)試的代碼,且無(wú)需修改

03.結(jié)構(gòu)更清晰

七:實(shí)現(xiàn)多態(tài)

概念:

不同的對(duì)象對(duì)于同一個(gè)操作,做出的響應(yīng)不同,那么這種情況在面向?qū)ο缶幊讨芯头Q(chēng)為多態(tài)。

使用多態(tài)的目的:

使用多態(tài)就是為了統(tǒng)一調(diào)用。

實(shí)現(xiàn)多態(tài)的方式:

①:通過(guò)虛方法:

實(shí)現(xiàn)多態(tài)的步驟:

01.在父類(lèi)中通過(guò)virtual關(guān)鍵字定義一個(gè)虛方法

02.在子類(lèi)中通過(guò)override關(guān)鍵字對(duì)父類(lèi)中的虛方法進(jìn)行重寫(xiě)

03.調(diào)用的時(shí)候,調(diào)用的是子類(lèi)的方法

?

Main方法進(jìn)行創(chuàng)建對(duì)象以及遍歷集合:

namespace Chap06多態(tài) {class Program{static void Main(string[] args){Chinese chinese = new Chinese();American american = new American();Korea korea = new Korea();Person[] p ={chinese,american,korea};//遍歷集合中的元素,調(diào)用對(duì)應(yīng)子類(lèi)中的Hello方法foreach (Person item in p){item.Hello();}Console.ReadLine();}}

?

轉(zhuǎn)載于:https://www.cnblogs.com/hr1997/p/5378012.html

總結(jié)

以上是生活随笔為你收集整理的第六章:继承和多态的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。