산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C# 중첩 클래스

C# 중첩 클래스

이 자습서에서는 예제를 통해 C#의 중첩 클래스에 대해 알아봅니다.

C#에서는 다른 클래스 내에 클래스를 정의할 수 있습니다. 중첩 클래스라고 합니다. 예를 들어,

class OuterClass {
  ...
  class InnerClass {
    ...
  }
}

여기에서 InnerClass 클래스를 만들었습니다. OuterClass 클래스 내부 . InnerClass 중첩 클래스라고 합니다.

<시간>

액세스 회원

중첩된 클래스의 구성원에 액세스하려면 먼저 해당 개체를 만들어야 합니다.

1.Outer 클래스의 객체 생성

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의 메소드 sportsCar 사용 외부 클래스의 객체.

<시간>

내부 클래스 내부의 외부 클래스 구성원 액세스

내부 클래스 내부의 외부 클래스 멤버에 액세스할 수 있습니다. 이를 위해 우리는 외부 클래스의 객체를 사용합니다. 예를 들어,

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++의 다형성