S_pot
C#_abstract: 추상클래스 본문
자식메서드에서 추상클래스를 반드시 구현하도록 하기 위해서 사용한다.
namespace _210603_008
{
abstract class Smart // 추상 메소드를 가진 클래스는 추상클래스가 됨.
{
abstract public void Test1(); // 추상 메서드
public abstract void Test2(); // 추상 메서드
// 1. abstract가 붙는다.
// 2. 본문(Body)이 없다.
// 3. private으로 선언할 수 없다.
}
abstract class Child1 : Smart
{ // 추상 메서드를 가진 클래스를 상속 받으면 추상클래스가 된다.
}
class Child2 : Smart
{ // 부모의 추상 메서드를 모두 구현하면 일반 클래스가 된다.
public override void Test1()
{ // 부모의 추상 메서드 구현
// override를 명시해야만 한다.
}
public override void Test2()
{ // 부모의 추상 메서드 구현
}
}
abstract class Child3 : Smart
{ // 추상 메서드를 가진 클래스를 상속받아서
// 부모의 추상 메서드를 1개라도 구현하지 않으면
// 추상클래스가 된다.
public override void Test1()
{
}
}
class Program
{
static void Main(string[] args)
{
// Child2 aChild1 = new Child1(); // 추상클래스여서 객체를 생성할 수 없다.
Child2 aChild2 = new Child2();
// Child2 aChild3 = new Child3(); // 추상클래스여서 객체를 생성할 수 없다.
}
}
}
'C#' 카테고리의 다른 글
C#_ 추상클래스: 일반호출, 배열을 통한 호출, List를 통한 호출 (0) | 2021.06.03 |
---|---|
C#_추상클래스(abstract), 자식 클래스에 부모메서드를 상속 (0) | 2021.06.03 |
C#_List: 배열, 배열을 수정하기가 array보다 간편하다. (0) | 2021.06.03 |
C#_get,set: 입력값 제한, 간단한 속성생성방법, propfull (0) | 2021.06.03 |
C#_겟터(Getter), 셋터(Setter): 값을 안전하게 변경 (0) | 2021.06.03 |