컴퓨터프로그래밍/C#

C# - 상속

zelkova 2016. 11. 25. 17:14

<목차로 돌아가기>

 

 

상속

상속 : 부모에게서 재산을 물려받는것 

 

succeeded to the throne. father -ㅁ-...

다른 클래스의 메소드 변수를 그대로 가지고오는 것을 말합니다.

 

백문이불여일견~! 우선 사용하는 방법은

 

class 기반(부모) 클래스명{}

 

class 파생(자식) 클래스명 : 기반(부모) 클래스명

{

   //

}

 

 

예제)

  1.  using System;
  2.  using System.Collections.Generic;
  3.  using System.Linq;
  4.  using System.Text;
  5.  using System.Threading.Tasks;
  6.  
  7.     class Base
  8.     {
  9.         protected string var1 = "protected 변수";
  10.         protected internal string var2 = "protected internal 변수";
  11.         internal string var3 = "internal 변수";
  12.         public string var4 = "public 변수";
  13.  
  14.     }
  15.     class Program : Base
  16.     {
  17.         static Program pr = new Program();
  18.  
  19.         static void Main(string[] args)
  20.         {
  21.             Console.WriteLine(pr.var1 );
  22.             Console.WriteLine(pr.var2);
  23.             Console.WriteLine(pr.var3);
  24.             Console.WriteLine(pr.var4);
  25.         }
  26.     }

결과)

 

 

 

 

11줄, 23줄 : 파생클래스는 접근제한 protected를 사용할 수 있습니다.~

17줄 : 그리고 그대로 Base를 상속한것을 알 수 있습니다.

 

 

Seald

sealed는 상속을 못하게 하는 키워드입니다.

 

예제)

  1.  using System;
  2.  using System.Collections.Generic;
  3.  using System.Linq;
  4.  using System.Text;
  5.  using System.Threading.Tasks;
  6.  
  7.  namespace ConsoleApplication1
  8.  {
  9.     sealed class Base
  10.     {
  11.         protected string var1 = "protected 변수";
  12.         protected internal string var2 = "protected internal 변수";
  13.         internal string var3 = "internal 변수";
  14.         public string var4 = "public 변수";
  15.  
  16.     }
  17.     class Program : Base
  18.     {
  19.         static Program pr = new Program();
  20.  
  21.         static void Main(string[] args)
  22.         {
  23.             Console.WriteLine(pr.var1 );
  24.             Console.WriteLine(pr.var2);
  25.             Console.WriteLine(pr.var3);
  26.             Console.WriteLine(pr.var4);
  27.         }
  28.     }
  29.  }

 

결과)

'ConsoleApplication2.Child': sealed 형식 'ConsoleApplication2.Parent'에서 파생될 수 없습니다.

 

9줄 : sealed를 사용하면 위와같은 에러가 발생합니다.

캐스팅

 

추가 정리 할것.

 

업 캐스팅

자식이 부모 클래스로 변환.

 

다운캐스팅.

부모 클래스가 자식클래스로 변환.

 

다운캐스팅은 지양해야 한다.

 

 

 

 

반응형

'컴퓨터프로그래밍 > C#' 카테고리의 다른 글

C# - 추상클래스  (0) 2016.11.27
C# - 메소드 메소드 재정의(override), 숨기기  (0) 2016.11.27
생성자와 소멸자  (0) 2016.11.25
접근제한자와 this  (0) 2016.11.24
C# - 클래스, 객체지향의 개념잡기  (0) 2016.11.24