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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#里面的继承

發布時間:2023/11/29 C# 111 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#里面的继承 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
舉個例子:
有一個基類RectangleEx
?1?class?RectangleEx
?2???{
?3?????private?int?_x,?_y,?_w,?_h;
?4?
?5?????public?int?x
?6?????{
?7???????get?{?return?_x;?}
?8???????set?{?_x?=?value;?}
?9?????}
10?????public?int?y
11?????{
12???????get?{?return?_y;?}
13???????set?{?_y?=?value;?}
14?????}
15?????public?int?w
16?????{
17???????get?{?return?_w;?}
18???????set?{?_w?=?value;?}
19?????}
20?????public?int?h?{?get?{?return?_h;?}?set?{?_h?=?value;?}?}
21?
22?????protected?Pen?_pen;
23?
24?????public?RectangleEx(int?x,?int?y,?int?w,?int?h)
25?????{
26???????_x?=?x;
27???????_y?=?y;
28???????_w?=?w;
29???????_h?=?h;
30???????_pen?=?new?Pen(Color.Black);
31?????}
32?
33?????//
34?????public?virtual?void?Draw(Graphics?g)
35?????{
36???????g.DrawRectangle(_pen,?_x,?_y,?_w,?_h);
37?????}
38?
39???}
你可以這樣用:
?1???????
?2???????Graphics?g?=?e.Graphics;
?3???????Pen?p?=?new?Pen(Color.Blue);
?6?
?7???????//use?RectangleEx?class?instance;
?8???????RectangleEx?rex?=?new?RectangleEx(15,?15,?30,?30?);
?9???????rex.Draw(g);
10???????.
現在需要畫一個正方形,可以這樣:
1???class?Square?:?RectangleEx
2???{
3?????public?Square(int?x,?int?y,?int?w)
4???????:?base(x,?y,?w,?w)
5?????{
6?????}
7???}
上面的base就是跟c++的初始化列表一樣的用法,C#中調用基類方法時,可以用base關鍵字

使用:
1?
2???????//use?square
3???????Square?sq?=?new?Square(20,?20,?20);
4???????sq.Draw(g);//這里使用了上面的來自PaintEventArgs?e?的Griphics對象
5?
這個時候呢,如果我希望有新的派生類,能同時畫2個長方形,需要改造Draw()方法(我有兩種辦法)
第一:我可以,把基類的Draw()方法,變成virtual,然后派生類override它;
第二:我還可以,通過使用new關鍵字,隱藏基類中的同名方法。
第二種方法是這樣的:
?1???class?DblRectangleEx?:?RectangleEx
?2???{
?3?????public?DblRectangleEx(int?x,int?y,int?w,int?h):base(x,y,w,h){
?4???????_pen?=?new?Pen(Color.Red);
?5?
?6?????}
?7?
?8?????private?Pen?_rPen?=?new?Pen(Color.SeaGreen);
?9?
10????
11?????public?new?void?Draw(Graphics?g)//使用new關鍵字,覆蓋基類中的同名方法
12?????{
13???????g.DrawRectangle(_pen,?x,?y,?w,?h);
14???????g.DrawRectangle(_rPen,?x+5,?y+5,?w,?h);
15?????}
16?
17?????/*
18?????public?override?void?Draw(Graphics?g)//如果是相同的方法(參數和返回值)只能用override(要求基類聲明時用virtual關鍵字)
19?????{
20???????g.DrawRectangle(_pen,?x,?y,?w,?h);
21???????g.DrawRectangle(_rPen,?x?+?5,?y?+?5,?w,?h);
22?????}*/
23?
24????????
25???}

總結

以上是生活随笔為你收集整理的C#里面的继承的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。