컴퓨터프로그래밍/C#
C# - 상속
zelkova
2016. 11. 25. 17:14
상속 |
상속 : 부모에게서 재산을 물려받는것
succeeded to the throne. father -ㅁ-...
다른 클래스의 메소드 변수를 그대로 가지고오는 것을 말합니다.
백문이불여일견~! 우선 사용하는 방법은
class 기반(부모) 클래스명{}
class 파생(자식) 클래스명 : 기반(부모) 클래스명
{
//
}
예제)
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- class Base
- {
- protected string var1 = "protected 변수";
- protected internal string var2 = "protected internal 변수";
- internal string var3 = "internal 변수";
- public string var4 = "public 변수";
- }
- class Program : Base
- {
- static Program pr = new Program();
- static void Main(string[] args)
- {
- Console.WriteLine(pr.var1 );
- Console.WriteLine(pr.var2);
- Console.WriteLine(pr.var3);
- Console.WriteLine(pr.var4);
- }
- }
결과)
11줄, 23줄 : 파생클래스는 접근제한 protected를 사용할 수 있습니다.~
17줄 : 그리고 그대로 Base를 상속한것을 알 수 있습니다.
Seald |
sealed는 상속을 못하게 하는 키워드입니다.
예제)
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ConsoleApplication1
- {
- sealed class Base
- {
- protected string var1 = "protected 변수";
- protected internal string var2 = "protected internal 변수";
- internal string var3 = "internal 변수";
- public string var4 = "public 변수";
- }
- class Program : Base
- {
- static Program pr = new Program();
- static void Main(string[] args)
- {
- Console.WriteLine(pr.var1 );
- Console.WriteLine(pr.var2);
- Console.WriteLine(pr.var3);
- Console.WriteLine(pr.var4);
- }
- }
- }
결과)
'ConsoleApplication2.Child': sealed 형식 'ConsoleApplication2.Parent'에서 파생될 수 없습니다.
9줄 : sealed를 사용하면 위와같은 에러가 발생합니다.
캐스팅 |
추가 정리 할것.
업 캐스팅
자식이 부모 클래스로 변환.
다운캐스팅.
부모 클래스가 자식클래스로 변환.
다운캐스팅은 지양해야 한다.
반응형