C#基礎知識編:基礎知識(7)メソッドの非表示化
継承クラスと抽象クラスで述べたように、サブクラスのメソッドと親クラスの間には次の関係があります。
サブクラスは親クラスのメソッドを直接使用します (ただし、親クラスのメソッドは public または protected 型である必要があります)。サブクラスは親クラスのメソッドをオーバーライドします (オーバーライド)。
サブクラスのメソッドは親クラスのメソッドをオーバーライドします。
rree
public class YSchool { private int id = 0; private string name = string.Empty; public int ID { get { return this.id; } } public string Name { get { return name; } } public YSchool() { this.id = 0; this.name = @"清华大学附中"; } public YSchool(int id, string name) { this.id = id; this.name = name; } /// <summary> /// 构造器 /// </summary> public YSchool(int id) { this.id = id; this.name = @"陕师大附中"; } } public class YTeacher { private int id = 0; private string name = string.Empty; private YSchool school = null; private string introDuction = string.Empty; private string imagePath = string.Empty; public int ID { get { return id; } } public string Name { get { return name; } } public YSchool School { get { if (school == null) { school = new YSchool(); } return school; } set { school = value; } } public string IntroDuction { get { return introDuction; } set { introDuction = value; } } public string ImagePath { get { return imagePath; } set { imagePath = value; } } /// <summary> /// 构造器 /// </summary> public YTeacher(int id, string name) { this.id = id; this.name = name; } /// <summary> /// 构造器 /// </summary> public YTeacher(int id, string name, YSchool school) { this.id = id; this.name = name; this.school = school; } /// <summary> /// 给学生讲课的方法 /// </summary> public void ToTeachStudents() { Console.WriteLine(string.Format(@"{0} 老师教育同学们: Good Good Study,Day Day Up!", this.Name)); } /// <summary> /// 惩罚犯错误学生的方法 /// 加virtual关键字,表示该方法可以被覆盖重写 /// </summary> /// <param name="punishmentContent"></param> public virtual void PunishmentStudents(string punishmentContent) { Console.WriteLine(string.Format(@"{0} 的{1} 老师让犯错误的学生 {2}。", this.School.Name, this.name, punishmentContent)); } } public class UniversityTeacher : YTeacher { public UniversityTeacher(int id, string name,YSchool school) : base(id, name, school) { } /// <summary> /// 隐藏父类的同名方法,隐藏后该类只能访问隐藏后的方法,不能访问到父类的该方法了。 /// </summary> public new void ToTeachStudents() { Console.WriteLine(string.Format(@"{0} 老师教育同学们:认真学习.net!", this.Name)); } /// <summary> /// 覆盖 /// </summary> public override void PunishmentStudents(string punishmentContent) { base.PunishmentStudents(punishmentContent);//也可以不执行父类方法。 //自己的代码 } }
結果:
親クラスのメソッドを継承し、new を使用して同じメソッドを変更します。親クラスのメソッドと同じ名前と同じパラメータ リストを持つ新しいメソッドを作成するプロセスは、隠蔽と呼ばれます。つまり、サブクラスは親クラスのこのメソッドを隠します。ただし、非表示は上書きとは異なります。非表示メソッドには、そのメソッドが配置されているクラスからのみアクセスできます。親クラスの変数を使用する場合でも、非表示メソッドにはアクセスできます。 上記のコードから、カバーすることと隠すことの違いがわかります。親クラス変数がサブクラス インスタンスを参照した後は、隠しメソッドのみにアクセスできますが、隠しメソッドにはアクセスできません。ただし、オーバーライドされたメソッドにはアクセスできます。
上記は C# の基礎知識をまとめたものです。基礎知識 (7) メソッドの隠れた内容については、PHP 中国語 Web サイト (www.php.cn) をご覧ください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









C# を使用した Active Directory のガイド。ここでは、Active Directory の概要と、C# での動作方法について、構文と例とともに説明します。

C# データ グリッド ビューのガイド。ここでは、SQL データベースまたは Excel ファイルからデータ グリッド ビューをロードおよびエクスポートする方法の例について説明します。

マルチスレッドと非同期の違いは、マルチスレッドが複数のスレッドを同時に実行し、現在のスレッドをブロックせずに非同期に操作を実行することです。マルチスレッドは計算集約型タスクに使用されますが、非同期はユーザーインタラクションに使用されます。マルチスレッドの利点は、コンピューティングのパフォーマンスを改善することですが、非同期の利点はUIスレッドをブロックしないことです。マルチスレッドまたは非同期を選択することは、タスクの性質に依存します。計算集約型タスクマルチスレッド、外部リソースと相互作用し、UIの応答性を非同期に使用する必要があるタスクを使用します。
