재우니의 블로그

 

추상클래스를 간단히 구현하는 방법

자식 클래스에서 상속받게 되면, override 키워드를 함수 앞에 붙인다.

using System;
/* 추상클래스 CoreClass.
 * 버전정보를 위한 멤버변수 version을 가지고
 * version에 값을 입력하는 추상메소드 setVer(),
 * version을 출력하는 printVer() 메소드를 가진다. */
public abstract class CoreClass
{
    protected string version;

    public abstract void setVer();

    public void printVer()
    {
        Console.WriteLine(version);
    }
}

/* 추상클래스를 상속받고, setVer() 메소드를 구현해주는
 * SystemA 클래스 */
public class SystemA : CoreClass
{
    public override void setVer()
    {
        version = "1.0";
    }
}

/* 추상클래스를 상속받고, setVer() 메소드를 구현해주는
 * SystemB 클래스 */
public class SystemB : CoreClass
{
    public override void setVer()
    {
        version = "2.0";
    }
}

public class MainClass
{
    public static int Main(string[] args)
    {
        /* SystemA 생성자를 이용하여 CoreClass 객체생성 */
        CoreClass coreClass = new SystemA();
        /* setVer() 메소드 실행, SystemA가 가진 메소드가 실행됨 */
        coreClass.setVer();
        coreClass.printVer();

        /* SystemB 생성자를 이용하여 SystemB 데이터형을 생성
         * 생성된 데이터형을 coreClass 객체가 참조케 함 */
        coreClass = new SystemB();
        /* setVer() 메소드 실행, SystemB가 가진 메소드가 실행됨 */
        coreClass.setVer();
        coreClass.printVer();
        return 0;
    }
}