추상 클래스
추상클래스는 클래스의 설계도라고 인식할 수 있다.
a팀장이 부모님이 급히 입원하셔서 b사원에게 자동차 에어백을 터트리는 메소드를 제작하라고 시켰다.
b는 열심히 노력해서 아래와 같이 구현했다.
airback(int 크기, int 색상){ ... }
a팀장은 상황이 진정되자 회사에 돌아와서 b에게 작업한걸 요구했고. a는 깊은 빡침을 느꼇다.
a가 원하는건 아래와 같은 작업이었기 때문이다.
airback(int 터지는시점, int 에어백의 압력){ ... }
이런 상황을 막기위해서 추상클래스가 필요하게 되었다.
※ 올래는 클래스로 설명해야 하지만 글이 늘어져서 메소드를 어거지로 끼워넣음.
인터페이스도같은 이유에서 존재하지만 인터페이스는 다중 상속적인 측면에서 단일 상속만을 할 수 있다는 차이점이 있다.
사용법)
abstract class 클래스명
{
}
예제)
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ConsoleApplication2
- {
- abstract public class AbstructClass
- {
- public void airBackTime()
- {
- Console.WriteLine("이렇게 작업하거라");
- }
- abstract public void airBackPress();
- }
- class PlayerClass : AbstructClass
- {
- public override void airBackPress()
- {
- Console.WriteLine("ㅇㅋㄷㅋ");
- }
- }
- class Application
- {
- static void Main(string[] args)
- {
- PlayerClass c = new PlayerClass();
- c.airBackPress();
- }
- }
- }
19줄 : airBackPress() 안쓰면 아래와 같은 경고가 나타남.
|
ㆍ추상 메서드는 기반 클래스의 virtual로 선언된 가상 메소드를 override 키워드를 사용해서 재정의하고 선언할 수 있다.
ㆍ 충상 메소드는 기반 클래스의 override로 선언된 오버라이드 메소드를 override 키워드를 사용해서 재정의하고 선언할 수있다.
class Parent
{
public void airBackTime()
{
Console.WriteLine("이렇게 작업하거라");
}
}
class FirstChild : Parent
{
public abstract override void airBackTime();
}
'컴퓨터프로그래밍 > C#' 카테고리의 다른 글
C# - 인터페이스 (0) | 2016.11.29 |
---|---|
C# - 확장클래스, 분할메소드, 중첩클래스 (0) | 2016.11.28 |
C# - 메소드 메소드 재정의(override), 숨기기 (0) | 2016.11.27 |
C# - 상속 (0) | 2016.11.25 |
생성자와 소멸자 (0) | 2016.11.25 |