C# ネストされたクラス
C# ネストされたクラス
このチュートリアルでは、例を使用して C# のネストされたクラスについて学習します。
C# では、別のクラス内にクラスを定義できます。これはネストされたクラスとして知られています。たとえば、
class OuterClass {
...
class InnerClass {
...
}
}
ここでは、クラス InnerClass を作成しました クラス OuterClass 内 . InnerClass ネストされたクラスと呼ばれます。
アクセス メンバー
ネストされたクラスのメンバーにアクセスするには、まずオブジェクトを作成する必要があります。
1.アウタークラスのオブジェクトを作成
OuterClass obj1 = new OuterClass();
ここで、obj1 を作成しました クラス OuterClass のオブジェクト .
<強い>2.内部クラスのオブジェクトを作成
OuterClass.InnerClass obj2 = new OuterClass.InnerClass();
OuterClass.InnerClass を使用していることがわかります。 obj2 を作成します 内部クラスのオブジェクト。これは InnerClass のためです OuterClass のネストされたクラスです .
個々のクラスのオブジェクトを作成したら、オブジェクト名とドット演算子を使用して各クラスのメンバーにアクセスできます。
例:C# ネストされたクラス
using System;
namespace CsharpNestedClass {
// outer class
public class Car {
public void displayCar() {
Console.WriteLine("Car: Bugatti");
}
// inner class
public class Engine {
public void displayEngine() {
Console.WriteLine("Engine: Petrol Engine");
}
}
}
class Program {
static void Main(string[] args) {
// create object of outer class
Car sportsCar = new Car();
// access method of outer class
sportsCar.displayCar();
// create object of inner class
Car.Engine petrolEngine = new Car.Engine();
// access member of inner class
petrolEngine.displayEngine();
Console.ReadLine();
}
}
} 出力
Car: Bugatti Engine: Petrol Engine
上記のプログラムでは、 Engine をネストしています Car 内のクラス クラス。
Program の内部 クラス、外側のクラスと内側のクラスの両方のオブジェクトを作成しました。
// object of outer class
Car sportsCar = new Car();
// object of nested class
Car.Engine petrolEngine = new Car.Engine(); 次に、これらのオブジェクトを使用して各クラスのメソッドにアクセスしました。
sportsCar.displayCar()-Carのオブジェクトを使用して外部クラス メソッドにアクセスするpetrolEngine.displayEngine()-Engineのオブジェクトを使用して内部クラス メソッドにアクセスする
注意 :外部クラスのオブジェクトを使用して内部クラスのメンバーにアクセスすることはできません。たとえば、
// error code
sportsCar.displayEngine();
ここでは、displayEngine() にアクセスできません。 内部クラス Engine のメソッド スポーツカーを使って 外部クラスのオブジェクト。
内部クラス内の外部クラス メンバーにアクセス
内部クラス内の外部クラスのメンバーにアクセスできます。このために、外部クラスのオブジェクトを使用します。たとえば、
using System;
namespace CsharpNestedClass {
// outer class
public class Car {
public string brand = "Bugatti";
// nested class
public class Engine {
public void displayCar() {
// object of outer class
Car sportsCar = new Car();
Console.WriteLine("Brand: " + sportsCar.brand);
}
}
}
class Program {
static void Main(string[] args) {
// object of inner class
Car.Engine engineObj = new Car.Engine();
engineObj.displayCar();
Console.ReadLine();
}
}
} 出力
Brand: Bugatti
上記の例では、Engine をネストしています。 Car 内のクラス クラス。行に注意してください、
// inside Engine class
Car sportsCar = new Car();
Console.WriteLine("Brand: " + sportsCar.brand);
ここでは、クラス Car のオブジェクトを使用しました。 フィールド brand にアクセスする .
内部クラス内の外部クラスの静的メンバーにアクセス
外部クラスの静的メンバーにアクセスする必要がある場合、そのオブジェクトを作成する必要はありません。代わりに、外部クラスの名前を直接使用できます。たとえば、
using System;
namespace CsharpNestedClass {
// outer class
public class Car {
//static member of outer class
public static string brand = "Bugatti";
// nested class
public class Engine {
public void display() {
// access static member of outer class
Console.WriteLine("Brand: " + Car.brand);
}
}
}
class Program {
static void Main(string[] args) {
// object of inner class
Car.Engine obj = new Car.Engine();
obj.display();
Console.ReadLine();
}
}
} 出力
Brand: Bugatti
上記の例では、Engine をネストしています。 Car 内のクラス クラス。 Car 静的フィールド brand があります .
ここでは、静的フィールド brand にアクセスしています。 内部クラス内 (Engine ) 外部クラスの名前 (Car を使用) ).
Console.WriteLine("Brand: " + Car.brand); 外部クラスの継承
通常のクラスと同様に、外側のクラスを継承することもできます。たとえば、
using System;
namespace CsharpNestedClass {
// outer class
class Computer {
public void display() {
Console.WriteLine("Method of Computer class");
}
// nested class
public class CPU {
}
}
class Laptop : Computer {
}
class Program {
static void Main(string[] args) {
// object of derived class
Laptop obj = new Laptop();
obj.display();
Console.ReadLine();
}
}
} 出力
Method of Computer class
上記の例では、クラス Laptop を派生させました。 外部クラス Computer から .
このため、display() にアクセスできます。 クラス Computer のメソッド クラス Laptop のオブジェクトを使用する .
内部クラスの継承
C# では、内部クラスも継承できます。たとえば、
using System;
namespace CsharpNestedClass {
// outer class
class Computer {
// nested class
public class CPU {
public void display() {
Console.WriteLine("Method of CPU class");
}
}
}
// inheriting inner class
class Laptop : Computer.CPU {
}
class Program {
static void Main(string[] args) {
// object of derived class
Laptop obj = new Laptop();
obj.display();
Console.ReadLine();
}
}
} 出力
Method of CPU class
上記の例では、Laptop を導出しました。 内部クラス CPU のクラス .
ネストされたクラスとともに外部クラスの名前を使用して、内部クラスを継承していることに注意してください。
class Laptop : Computer.CPU {} C言語