繼承和Protected修飾符(C )

2021-07-10 09:36:36 字數 1428 閱讀 7065

繼承:

1.基類中受保護成員只能從基類及其派生類中訪問

2.例項化派生類時,會首先呼叫基類的構造器,避免遺忘對基類的構造器

3.基類如果沒有可訪問的構造器,編譯器就不清楚如何構造基類,進而報錯

4.避免出現這個問題,在派生類構造器的頭部要顯式指定要執行哪乙個基類構造器

看下面例子:

public sealed partial class inheritanceexample : page

,手機系統:", phone.brand, phone.showsystemname());

lumia lumia = new lumia("flyme");

//未設定lumia的brand和screensize屬性,雖然父類的brand設定了,但是兩者並不是一樣的,父類是父類的值,子類是子類的值,這點必須要認清。

//注意未設定值的brand和screensize最後的輸出。

txtblk2.text = string.format("手機品牌:,手機系統:,手機螢幕:", lumia.brand, lumia.showsystemname(), lumia.screensize);

lumia lumia2 = new lumia("win10 mobile");

lumia2.brand = "microsoft";

lumia2.screensize = 5;

txtblk3.text = string.format("手機品牌:,手機系統:,手機螢幕:", lumia2.brand, lumia2.showsystemname(), lumia2.screensize);

}}class phone

private string _operationsystem;

protected string operationsystem

set}

public string showsystemname()

//基類構造器(那麼派生類構造器要指定呼叫基類的哪個構造器)

public phone(string operationsystem)

}class lumia:phone

string showsystem(phone phone)

//注意這個建構函式必須要寫,還有後面的":base(operationsystem)"

//例項化派生類,首先會呼叫基類構造器,來避免繞過對基類的初始化

//如果不在派生類構造器頭部顯式指定執行哪乙個基類構造器,就會因為缺少可訪問的構造器而報錯

public lumia(string operationsystem):base(operationsystem)

}

結果截圖:

protected修飾符總結

晚上敲 的時候,發現呼叫jtextfield的protected getcolumnwidth 方法報錯。看來自己以前對protected的理解是錯誤的,於是測試一下。寫乙個父類和兩個子類 public class a public class b1 extends a public class b...

訪問修飾符protected

protected修飾符的確讓我有點困惑。例如 object的clone 方法就是protected修飾的。發現,有的時候可以訪問,但很多時候根本訪問不到。一 下面就以clone 方法為例 我在superclass類中,不重寫clone 只是訪問。如下 package cn public class...

C 的protected訪問修飾符

概述 設a為父類,b為繼承a的子類 在a中被protected修飾的成員 1 在a中可以訪問 2 在b中可以直接訪問 3 在b中通過b的例項訪問 4 在a和b的外部類無法訪問 總結 基類中訪問無限制 子類中直接訪問或通過子類例項訪問 示例 using system namespace testpro...