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言語