2009年11月28日土曜日

統合開発環境 IDE(Integrated Development Environment)
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 コメント:

コメントを投稿