工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

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();

次に、これらのオブジェクトを使用して各クラスのメソッドにアクセスしました。

注意 :外部クラスのオブジェクトを使用して内部クラスのメンバーにアクセスすることはできません。たとえば、

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

  1. C# クラスとオブジェクト
  2. C# アクセス修飾子
  3. C# コンストラクター
  4. C# 静的キーワード
  5. C# の抽象クラスとメソッド
  6. C# ネストされたクラス
  7. C# 部分クラスと部分メソッド
  8. C# の封印されたクラスとメソッド
  9. C# コンストラクターのオーバーロード
  10. C++ のポリモーフィズム
  11. C++ でのデータの抽象化