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 상속
2021/01/22 - [개발자/.NET] - C# (C Sharp) Interface (인터페이스 추상화) 자바와 차이
Tag. 추상 메소드, c# 추상 클래스, c sharp 추상 클래스, 씨샵 추상 클래스, c# 추상 메소드, c sharp 추상 메소드, 씨샵 추상 메소드
'개발자 > .NET' 카테고리의 다른 글
Visual Studio for Windows 단축키 변경 (0) | 2021.01.24 |
---|---|
C# (C Sharp) Interface (인터페이스 추상화) 자바와 차이 (0) | 2021.01.22 |
C# (C Sharp) Inheritance 상속 (0) | 2021.01.22 |
C# (C Sharp) Getter, Setter 자바와 비교 (0) | 2021.01.22 |
C# Class Members(클래스 멤버), Constructor(생성자) (0) | 2021.01.22 |