SSISO Community

갤러리정

클래스 상속 - CSharp

클래스상속
- 부모객체의 특성을 자식객체가 물려받는것
- 코드의 재사용
- 유지 보수 원할
- 상속(Inheritance)
- 파생(Derive)
- 확장(Extend)

 

기본클래스(부모클래스)상속
- 단일 클래스 상속만 허용
- 기본 클래스에서 public멤버는 파생 클래스에서 public멤버
- 기본클래스에서 protected멤버는 파생 클래스에서 protected멤버
- 기본 클래스에서 private멤버는 파생 클래스에서 상속불가

 

        class Printer //추상적인 개념이 상위에 있는것이 상속관계를 만들었을때 더 쉬워진다.
        {
                public string printerName ="HP";
                private string owner ="홍길동";

                public void PrintMono()
                {
                        Console.WriteLine("Printer클래스에서 흑백출력");
                }
        }

 

        //Printer 클래스 상속
        class HP: Printer
        {
                public string printerType =  "Deskjet";
        }

        class MainClass
        {
                [STAThread]
                static void Main(string[] args)
                {
                        HP hp = new HP();

                        //기본클래스 멤버 사용
                        hp.PrintMono();
                        Console.WriteLine("프린터 명 : {0}", hp.printerName);

                        //파생클래스 멤버사용
                        Console.WriteLine("프린터 종류 : {0}", hp.printerType);

                        //Console.WriteLine("프린터 소유자 : {0}", hp.owner);
                        //private 변수는 상속받지 못한다.
                }
        }

 

 상속전이(Transformation)
 - 부모의 멤버를 자식이 자식의 멤버를 그 자식이 물려받는 경우

 

암시적으로 기본 클래스 생성자 호출
  - 기본 클래스 생성자도 상속가능

 

명시적으로 기본 클래스 생성자 호출
  - base키워드 : 객체 자신의 부모객체
  - 클래스 상속과 마찬가지로 ':'를 파생클래스 생성자 뒤에 붙이고 기본 클래스 생성자의 파라미터를 써준다.
  - base 키워드로 부모 멤버에 접근가능

 

    class Printer
    {
        public string printerName;
        public Printer()  //기본생성자
        {
            Console.WriteLine("Printer클래스의  매개변수가 없는 기본생성자");
        }
        public Printer(string printerName)  //기본생성자 오버로딩
        {
            this.printerName=printerName;
            Console.WriteLine(this.printerName);
        }

    }

    class HP640 : Printer
    {
     //부모클래스인 Printer의 기본생성자 호출
     //  public HP640(): base()   //매개변수가 없는 기본생성자 호출
         public HP640(): base("프린터") //매개변수가 있는 기본생성자 호출
        {
            Console.WriteLine("HP640프린터");
        }
    }
   
    class HPC : HP640
    {
        public HPC() : base()   //부모클래스인  HP640의 기본생성자 호출
        {
            Console.WriteLine("HPC프린터");
        }
    }

    public class MainClass
    {
        public static void Main()
        {
            HP640 hp = new HPC();
            Console.Read();
        }
    }

951 view

4.0 stars