[解決済み] c#でプロパティをオーバーライドできますか?どのように?
2023-06-11 15:32:11
質問
このようなBaseクラスがあります。
abstract class Base
{
public int x
{
get { throw new NotImplementedException(); }
}
}
そして、次のような子孫。
class Derived : Base
{
public int x
{
get { //Actual Implementaion }
}
}
コンパイルすると、派生クラスの定義である
x
の定義が Base のものを隠してしまいます。c#でメソッドのようにプロパティをオーバーライドすることは可能でしょうか?
どのように解決するのですか?
この場合
virtual
キーワード
abstract class Base
{
// use virtual keyword
public virtual int x
{
get { throw new NotImplementedException(); }
}
}
または抽象的なプロパティを定義します。
abstract class Base
{
// use abstract keyword
public abstract int x { get; }
}
とし
override
キーワードを使用します。
abstract class Derived : Base
{
// use override keyword
public override int x { get { ... } }
}
オーバーライドしない場合は
new
キーワードを使用して、親の定義を隠すことができます。
abstract class Derived : Base
{
// use new keyword
public new int x { get { ... } }
}
関連
-
[解決済み] リフレクションを使用して文字列からプロパティ値を取得する
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] C#のオートプロパティに初期値を与える最良の方法は何ですか?
-
[解決済み] JavaScriptでオブジェクトのキー/プロパティの数を効率的にカウントする方法
-
[解決済み] EqualsメソッドがオーバーライドされたときにGetHashCodeをオーバーライドすることが重要な理由は何ですか?
-
[解決済み] List<T>をオブジェクトのプロパティでソートする方法
-
[解決済み] フィールドとプロパティの違いは何ですか?
-
[解決済み] Eclipseにプロジェクトをインポートした後に「Must Override a Superclass Method」エラーが発生する。
-
[解決済み] Pythonの@propertyデコレーターはどのように機能するのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み】パディングが無効で、削除できない?
-
[解決済み】SmtpException: トランスポート接続からデータを読み取れません:net_io_connectionclosed
-
[解決済み】C# ASP.NET使用時に「WebClientのリクエスト中に例外が発生しました。
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】HRESULTからの例外:0x800A03ECエラー