C#/いまさらヒトに聞けないこといろいろ/ポリモフィズム
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
ポリモーフィズムについていろいろ確認してみました。なんだ...
namespace InterfaceSample
{
public interface IParent
{
void execute1();
}
public abstract class AParent
{
public void execute2()
{
Console.WriteLine("親クラスのメソッドです");
}
}
class Child : AParent, IParent
{
public void execute1()
{
Console.WriteLine("子クラスでinterfaceのメソ...
}
public void execute2()
{
Console.WriteLine("子クラスでAParentのメソッ...
}
}
class Program
{
static void Main(string[] args)
{
IParent iParent = new Child();
iParent.execute1(); //overrideしたChildのメ...
AParent aParent = new Child();
aParent.execute2(); //overrideしたChildのメ...
}
}
}
なかなかと衝撃的なのが、ポリモフィズムしたつもりでも、
AParent aParent = new Child();
aParent.execute2(); //overrideしたChildのメソッドが呼ば...
ココで親のメソッドが呼ばれるってところでしょうか。確かに...
#ref(01.png)
いわゆるJavaのようにサブクラス(というか右辺の実装クラス)...
public abstract class AParent
{
public virtual void execute2()
{
Console.WriteLine("親クラスのメソッドです");
}
}
class Child : AParent, IParent
{
public override void execute2()
{
Console.WriteLine("子クラスでAParentのメソッドを...
}
}
これでJavaと同じポリモフィズムになりました。
-[[Override キーワードと New キーワードによるバージョン管...
----
この記事は
#vote(おもしろかった,そうでもない)
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
ポリモーフィズムについていろいろ確認してみました。なんだ...
namespace InterfaceSample
{
public interface IParent
{
void execute1();
}
public abstract class AParent
{
public void execute2()
{
Console.WriteLine("親クラスのメソッドです");
}
}
class Child : AParent, IParent
{
public void execute1()
{
Console.WriteLine("子クラスでinterfaceのメソ...
}
public void execute2()
{
Console.WriteLine("子クラスでAParentのメソッ...
}
}
class Program
{
static void Main(string[] args)
{
IParent iParent = new Child();
iParent.execute1(); //overrideしたChildのメ...
AParent aParent = new Child();
aParent.execute2(); //overrideしたChildのメ...
}
}
}
なかなかと衝撃的なのが、ポリモフィズムしたつもりでも、
AParent aParent = new Child();
aParent.execute2(); //overrideしたChildのメソッドが呼ば...
ココで親のメソッドが呼ばれるってところでしょうか。確かに...
#ref(01.png)
いわゆるJavaのようにサブクラス(というか右辺の実装クラス)...
public abstract class AParent
{
public virtual void execute2()
{
Console.WriteLine("親クラスのメソッドです");
}
}
class Child : AParent, IParent
{
public override void execute2()
{
Console.WriteLine("子クラスでAParentのメソッドを...
}
}
これでJavaと同じポリモフィズムになりました。
-[[Override キーワードと New キーワードによるバージョン管...
----
この記事は
#vote(おもしろかった,そうでもない)
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: