統合開発環境 IDE(Integrated Development Environment)
Microsoft Visual C# 2008 Express Edition
今日書いたソースコード。
オーバーライドと隠蔽を使用してみる。
using System;
class VisualStudio // 基本クラス
{
public virtual void ideInfo()
{
Console.WriteLine("VisualStudio");
}
}
class Language : VisualStudio // 派生クラス
{
public override void ideInfo() /*基本クラスのメソッドを
オーバーライド*/
{
Console.WriteLine("Language");
}
}
class VisualWebDeveloper : VisualStudio // 派生クラス
{
new public void ideInfo() // 基本クラスのメソッドを隠蔽
{
Console.WriteLine("VisualWebDeveloper");
}
}
class MainClass
{
static void Main()
{
Language l = new Language();
l.ideInfo(); // 出力値:Language
VisualWebDeveloper vwd = new VisualWebDeveloper();
vwd.ideInfo(); // 出力値:VisualWebDeveloper
VisualStudio v = new VisualStudio();
v.ideInfo(); // 出力値:VisualStudio
}
}
カプセル化について。private,protected,public アクセス修飾子を使用してみる。
using System;
class VisualStudio
{
int language = 0; // 既定はprivate
protected string name = "VisualStudio";
public void ideInfo(int language)
{
this.language = language; /* languageフィールドに値を
設定すpublicメソッド */
}
public virtual void displayName() /* フィールドの値を出力する
仮想メソッド */
{
Console.WriteLine(language);
Console.WriteLine(name);
}
}
// 派生クラス
class VisualWebDeveloper : VisualStudio
{
public override void displayName()
{
// this.language = 1; はprivateのためエラーになる
this.name = "VisualWebDeveloper"; /* nameフィールドに
VisualWebDeloperを
代入 */
base.displayName();
}
}
class MainClass
{
static void Main()
{
// 派生クラスのインスタンスを作成
VisualWebDeveloper v = new VisualWebDeveloper();
v.ideInfo(1); // typeフィールドに1を設定
// v.name = "sample"; これはprotectedのためエラーになる
v.displayName(); // 出力値:1 VisualWebDeveloper
}
}
今日は最後のプログラムでわざとエラーを出力し、その後、//でコメントにしてエラーをなくしてみたりしました。また1歩成長したなあと思い、プログラミング学習がわくわく楽しみな今日この頃です。
0 コメント:
コメントを投稿