Microsoft Visual C# 2008 Express Edition今日書いたソースコード。
基本クラス、派生クラス。
using System;
class VisualStudio // 基本クラス
{
public int type = 0;
public string name = "VisualStudio";
public void ideInfo()
{
Console.WriteLine("VisualStudio");
}
}
class CSharp : VisualStudio // 派生クラス
{
public string language = "C#";
public void appInfo()
{
Console.WriteLine("ConsoleApp");
}
}
class MainClass
{
static void Main()
{
CSharp c = new CSharp(); // 派生クラスのインスタンス
Console.WriteLine(c.language); // 出力値:C#
c.appInfo(); // 出力値:ConsoleApp
Console.WriteLine(c.type); // 出力値:0
c.ideInfo(); // 出力値:VisualStudio
VisualStudio v = new VisualStudio(); // 基本クラスのインスタンス
Console.WriteLine(v.type); // 出力値:0
v.ideInfo(); // 出力値:VisualStudio
}
}
クラスに継承関係がある場合の処理の実行順序の確認。
using System;
class VisualStudio // 基本クラス
{
public VisualStudio() // 2番目
{
Console.WriteLine("基本コンストラクタ");
}
}
class CSharp : VisualStudio // 派生クラス
{
public string language = "C#"; // 1番目
public CSharp()
{
Console.WriteLine("派生クラスのコンストラクタ"); // 3番目
}
}
class MainClass
{
static void Main()
{
CSharp c = new CSharp();
}
}
base キーワードで基本クラスにパラメータを渡す。
using System;
class BaseClass // 基本クラス
{
public BaseClass(string s)
{
Console.WriteLine(s);
}
}
class DerivedClass : BaseClass // 派生クラス
{
public DerivedClass(string s1, string s2) : base(s2)
{
Console.WriteLine(s1);
}
}
class MainClass
{
static void Main()
{
var c = new DerivedClass("Derived","Base");
}
}
基本クラスに渡すパラメータを変更して出力値の順序を入れ替えてみる。
using System;
class BaseClass // 基本クラス
{
public BaseClass(string s)
{
Console.WriteLine(s);
}
}
class DerivedClass : BaseClass // 派生クラス
{
public DerivedClass(string s1, string s2) : base(s1)
{
Console.WriteLine(s2);
}
}
class MainClass
{
static void Main()
{
var c = new DerivedClass("Drived","Base");
}
}
new キーワードを使用し派生クラスで基本クラスのフィールドとメソッドを隠蔽する。
using System;
class VisualStudio // 基本クラス
{
public int language = 0;
public string name = "VisualStudio";
public void ideInfo()
{
Console.WriteLine("VisualStudio");
}
}
class VisualWebDeveloper : VisualStudio // 派生クラス
{
new public int language = 1; // 同じフィールドを定義
new public void ideInfo() // 同じメソッドを定義
{
Console.WriteLine("VisualWebDeveloper");
}
}
class MainClass
{
static void Main()
{
VisualWebDeveloper vwd = new VisualWebDeveloper();
vwd.ideInfo(); // 出力値:VisualWebDeveloper
Console.WriteLine(vwd.language); // 出力値:1
}
}
派生クラスでメンバを隠蔽しつつbase キーワードで基本クラスのメンバにアクセス。
using System;
class BaseClass // 基本クラス
{
public int num = 0;
}
class NewClass : BaseClass
{
new public int num = 1; // 同じフィールドを定義し隠蔽
public void display()
{
Console.WriteLine(this.num); // このクラスのメンバにアクセス
Console.WriteLine(base.num); // 基本クラスのメンバにアクセス
}
}
class MainClass
{
static void Main()
{
NewClass n = new NewClass();
n.display(); // 出力値(派生クラス):1 出力値(基本クラス):0
}
}
今日も基本クラス、派生クラス、継承、隠蔽等新しいものを理解し、プログラミング学習がわくわく楽しい今日この頃です。
0 コメント:
コメントを投稿