Abstraction은 restricted (축소된) 클래스와 메소드를 말한다.

1. Abstract class는 instance화 할 수 없다.
  -> inheritance(상속)을 해야 사용할 수 있다. 상속 받은 클래스는 instance화를 할 수 있음.

2. Abstract method는 abstract class 내에서만 사용할 수 있다.
  -> 위 1번에서 클래스를 상속하면서 메소드를 overriding(오버라이딩) 해야 사용할 수 있다.

 

// Abstract class
abstract class Animal
{
  // Abstract method (does not have a body)
  public abstract void animalSound();
  // Regular method
  public void sleep()
  {
    Console.WriteLine("Zzz");
  }
}


// Sub class (inherit from Animal)
class Pig : Animal
{
  public override void animalSound()
  {
    // The body of animalSound() is provided here
    Console.WriteLine("The pig says: wee wee");
  }
}


class Program
{
  static void Main(string[] args)
  {
    Pig myPig = new Pig(); // Create a Pig object
    myPig.animalSound();  // Call the abstract method
    myPig.sleep();  // Call the regular method
  }
}


결과 :
The pig says: wee wee
Zzz

설명 :
1 ) Animal 클래스는 abstract 클래스다. animalSound( ) 메소드는 abstract 메소드다.
2 ) Animal 클래스를 상속해 Pig 클래스를 만들고, 그러면서 animalSound( ) 메소드를 public 으로 override 했다.
3 ) Program 클래스에서 main 메소드가 프로그램을 시작한다. 
4 ) myPig라는 이름으로 Pig 클래스를 instance화 한다. (Pig 클래스는 Animal 클래스를 상속 받아 만들어 진 abstract가 아닌 일반 클래스라 instance가 가능하다.)
5 ) myPig의 animalSound( ) 메소드를 실행한다. (Pig 클래스의 animalSound( ) 메소드는 public으로 override 되었기 때문에 사용이 된다.)
6 ) myPig의 sleep( ) 메소드는 Pig 클래스에서 override는 하지 않았지만 abstract 메소드가 아닌 public 으로 선언되었기 때문에 Pig 클래스에 자동으로 상속 되어 사용이 된다.

 

추상 클래스를 만드는 또 다른 방법

2021/01/22 - [개발자/.NET] - C# (C Sharp) Inheritance 상속

 

C# (C Sharp) Inheritance 상속

1. Namespace(=Package)에 각 클래스 파일로 분류한 프로젝트 구조를 그대로 보면 Vehicle.cs using System; namespace MyApplication { class Vehicle // Base class { public string brand = "Ford"; // Vehicle..

greendreamtrre.tistory.com

2021/01/22 - [개발자/.NET] - C# (C Sharp) Interface (인터페이스 추상화) 자바와 차이

 

C# (C Sharp) Interface (인터페이스 추상화) 자바와 차이

클래스를 선언할 때 abstract를 명시하는 것 말고도 인터페이스가 있다. 뭐 자바에서와 같은 개념이다. 인터페이스는 그 자체가 완전히 추상화 된 클래스다. An interface is a completely "abstract class", wh

greendreamtrre.tistory.com

 

Tag. 추상 메소드, c# 추상 클래스, c sharp 추상 클래스, 씨샵 추상 클래스, c# 추상 메소드, c sharp 추상 메소드, 씨샵 추상 메소드

+ Recent posts