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

C# 추상 클래스 및 메서드

C# 추상 클래스 및 메서드

이 자습서에서는 예제를 통해 C# 추상 클래스와 메서드에 대해 알아봅니다.

추상 클래스

C#에서는 추상 클래스의 개체를 만들 수 없습니다. abstract을 사용합니다. 추상 클래스를 생성하는 키워드. 예를 들어,

// create an abstract class
abstract class Language {
  // fields and methods
}
...

// try to create an object Language
// throws an error
Language obj = new Language();

추상 클래스에는 추상 메서드(본문 없는 메서드)와 비추상 메서드(본문 있는 메서드)가 모두 있을 수 있습니다. 예를 들어,

abstract class Language {

  // abstract method
  public abstract void display1();

  // non-abstract method
  public void display2() {
    Console.WriteLine("Non abstract method");
  }
}

계속 진행하기 전에 C# 상속에 대해 알아야 합니다.

<시간>

추상 클래스 상속

추상 클래스의 객체를 만들 수 없으므로 파생 클래스를 만들어야 합니다. 파생 클래스의 개체를 사용하여 추상 클래스의 멤버에 액세스할 수 있습니다. 예를 들어,

using System;
namespace AbstractClass {

  abstract class Language {

    // non-abstract method
    public void display() {
      Console.WriteLine("Non abstract method");
    }
  }

  // inheriting from abstract class
  class Program : Language {

    static void Main (string [] args) {
      
      // object of Program class
      Program obj = new Program();

      // access method of an abstract class
      obj.display();

      Console.ReadLine();
    }
  }
}

출력

Non abstract method

위의 예에서 Language라는 추상 클래스를 만들었습니다. . 클래스에 비추상 메서드 display()가 포함되어 있습니다. .

프로그램을 만들었습니다. 추상 클래스를 상속하는 클래스. 진술을 주목하십시오.

obj.display();

여기, obj 파생 클래스 Program의 개체입니다. . obj 개체를 사용하여 추상 클래스의 메서드를 호출합니다. .

참고 :추상 클래스는 기본 클래스로만 사용할 수 있습니다. 이것이 추상 클래스를 봉인할 수 없는 이유입니다. 자세한 내용은 C# 봉인된 클래스 및 메서드를 참조하세요.

<시간>

C# 추상 메소드

본문이 없는 메서드를 추상 메서드라고 합니다. abstract를 사용합니다. 추상 메서드를 만드는 키워드입니다. 예를 들어,

public abstract void display();

여기서 display() 추상적인 방법이다. 추상 메소드는 추상 클래스 내부에만 존재할 수 있습니다.

비추상 클래스가 추상 클래스를 상속할 때 추상 메소드의 구현을 제공해야 합니다.

예시:추상 메소드 구현

using System;
namespace AbstractClass {

  abstract class Animal {

    // abstract method
    public abstract void makeSound();
  }

  // inheriting from abstract class
  class Dog : Animal {

    // provide implementation of abstract method
    public override void makeSound() {

      Console.WriteLine("Bark Bark");

    }
  }
  class Program  {
    static void Main (string [] args) {
      // create an object of Dog class
      Dog obj = new Dog();
      obj.makeSound();    

      Console.ReadLine(); 
    }
  }
}

출력

Bark Bark 

위의 예에서 Animal이라는 추상 클래스를 만들었습니다. . 추상 메소드 makeSound()가 있습니다. 클래스 내부.

가 있습니다. Animal에서 상속되는 클래스 수업. 클래스는 추상 메서드 makeSound()의 구현을 제공합니다. .

// provide implementation of abstract method
public override void makeSound() {

  Console.WriteLine("Bark Bark");

}

override를 사용했습니다. makeSound() 방법. 이는 메서드가 기본 클래스의 메서드를 재정의하고 있음을 나타냅니다.

그런 다음 Dog 개체를 사용했습니다. makeSound()에 접근하는 클래스 .

클래스가 추상 메서드 makeSound()의 구현을 제공하지 않았습니다. , 클래스도 추상으로 표시되어야 합니다.

참고 :C# 상속과 달리 virtual을 사용할 수 없습니다. 기본 클래스의 추상 메서드를 사용합니다. 이는 추상 클래스가 암시적으로 가상이기 때문입니다.

<시간>

get 및 set 접근자가 있는 추상 클래스

get 및 set 접근자를 추상으로 표시할 수 있습니다. 예를 들어,

using System;
namespace AbstractClass {
  abstract class Animal {
    
    protected string name;
    // abstract method
    public abstract string Name {
      get;
      set;
    }
  }

  // inheriting from abstract class
  class Dog : Animal {

    // provide implementation of abstract method
    public override string Name {
      get {
        return name;
      }
      set {
        name = value; 
      }
    }
   
  }
  class Program  {
    static void Main (string [] args) {
      // create an object of Dog class
      Dog obj = new Dog();  
      obj.Name = "Tom";
      Console.WriteLine("Name: " + obj.Name); 

      Console.ReadLine();
    }
  }
}

출력

Name: Tom

위의 예에서 get 및 set 접근자를 추상으로 표시했습니다.

obj.Name = "Tom";
Console.WriteLine("Name: " + obj.Name);

name 값을 설정하고 가져옵니다. 추상 클래스 Animal 필드 파생 클래스 Dog의 개체 사용 .

<시간>

추상 클래스의 액세스 생성자

추상 클래스도 생성자를 가질 수 있습니다. 예를 들어,

using System;
namespace AbstractClass {
  abstract class Animal {
    
    public Animal() {
      Console.WriteLine("Animal Constructor");
    }
  }

  class Dog : Animal {
    public Dog() {
      Console.WriteLine("Dog Constructor");
    }   
  }

  class Program  {
    static void Main (string [] args) {
      // create an object of Dog class
      Dog d1 = new Dog();  

      Console.ReadLine();
    }
  }
}

출력

Animal Constructor
Dog Constructor

위의 예에서 추상 클래스 Animal 내부에 생성자를 만들었습니다. .

Dog d1 = new Dog();

여기에서 파생 클래스 Dog의 개체를 만들 때 추상 클래스 Animal의 생성자 도 호출됩니다.

참고 :추상 클래스 내에서 소멸자를 사용할 수도 있습니다.

<시간>

C# 추상화

추상 클래스는 C#에서 추상화를 달성하는 데 사용됩니다.

추상화는 객체 지향 프로그래밍의 중요한 개념 중 하나입니다. 불필요한 세부 정보를 숨기고 필요한 정보만 표시할 수 있습니다.

이렇게 하면 더 간단하고 높은 수준의 아이디어로 세부 사항을 숨김으로써 복잡성을 관리하는 데 도움이 됩니다.

추상화의 실제 예는 오토바이 브레이크가 될 수 있습니다. 우리는 브레이크가 하는 일을 알고 있습니다. 브레이크를 밟으면 오토바이가 멈춥니다. 그러나 브레이크의 작동은 우리에게 숨겨져 있습니다.

브레이크 작동을 숨김으로써 얻을 수 있는 주요 이점은 이제 제조업체가 오토바이마다 브레이크를 다르게 구현할 수 있다는 것입니다. 그러나 브레이크가 하는 일은 동일할 것입니다.

예:C# 추상화

using System;
namespace AbstractClass {
  abstract class MotorBike {
    
    public abstract void brake();
  }

  class SportsBike : MotorBike {

    // provide implementation of abstract method
    public override void brake() {
      Console.WriteLine("Sports Bike Brake");
    }
   
  }

  class MountainBike : MotorBike {

    // provide implementation of abstract method
    public override void brake() {      
      Console.WriteLine("Mountain Bike Brake");
    }
   
  }
  class Program  {
    static void Main (string [] args) {
      // create an object of SportsBike class
      SportsBike s1 = new SportsBike();  
      s1.brake();

      // create an object of MountainBike class
      MountainBike m1 = new MountainBike();
      m1.brake();

      Console.ReadLine();
    }
  }
}

출력

Sports Bike Brake
Mountain Bike Brake

위의 예에서 추상 클래스 MotorBike를 만들었습니다. . 추상 메소드 brake()가 있습니다. .

brake()brake()의 구현인 추상 메소드입니다. 모터바이크에서 숨겨져 있습니다.

모든 오토바이에는 브레이크의 구현이 다릅니다. 이것이 SportsBikebrake() 자체 구현 및 마운틴바이크 brake() 자체 구현 .

참고 :인터페이스를 사용하여 C#에서 완전한 추상화를 달성합니다. 자세히 알아보려면 C# 인터페이스를 방문하세요.


C 언어

  1. C# 클래스 및 개체
  2. C# 부분 클래스 및 부분 메서드
  3. C# 봉인된 클래스 및 메서드
  4. C++ 클래스 및 개체
  5. C++ friend 함수 및 friend 클래스
  6. 자바 클래스와 객체
  7. 자바 추상 ​​클래스와 추상 메소드
  8. Java 중첩 및 내부 클래스
  9. C# 추상 클래스 자습서 예제:추상화란?
  10. 자바 - 객체와 클래스