티스토리 뷰

C#

상속(inherit)

란텔 2016. 1. 16. 18:49

자바와 같이 c#도 객체지향언어이며, 상속개념이 있다.

상속은 부모타입의 멤버들을 자손이 물려받는 것이다.

상속받는다를 확장한다라고도 표현할 수 있다. 이유는 부모의 멤버들을 자손이 물려받고 자손은 물려받은 멤버와 함께 자손 자신이 가지고 있는 멤버가 따로 있을 수도 없을 수도 있기 때문에 부모에 비해 항상 자손클래스 멤버의 수는 같거나 더 많기 때문..



다음은 상속의 예이다.

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace InheritApplication { class GasStation { protected int disel; protected int gasoline; public GasStation() : this(100, 50) { } public GasStation(int disel, int gasoline) { this.disel = disel; this.gasoline = gasoline; } public int Disel { get { return disel; } set { disel = value; } } public int Gasoline { get { return gasoline; } set { gasoline = value; } } } class WashGasStation : GasStation { int washingMachine = 2; public int WashingMachine{ get{return washingMachine;} set{washingMachine = value;} } public void StartWashing() { if (washingMachine <= 0) { Console.WriteLine("사용할 수 있는 세차기계가 없습니다."); return; } --washingMachine; } public void EndWashing() { ++washingMachine; } } class Program { static void Main(string[] args) { GasStation g = new GasStation(1000,500); Console.WriteLine("휘발류 용량 : {0}",g.Gasoline); WashGasStation wg = new WashGasStation(); wg.StartWashing(); wg.StartWashing(); wg.StartWashing(); wg.EndWashing(); wg.StartWashing(); } } }

c#에서의 상속은 

자손클래스명 : 부모클래스명

의 형태로 이루어진다.


위 코드는 임의로 짜본 코드다. 기존의 주유소라는 부모클래스(GasStation)가 있는데 이 클래스에는 세차를 하는 기능이 없다.

그래서 세차도하고 주유도 할수 있는 세차주유소(WashGasStation)라는 클래스를 하나 만들어 

부모클래스(GasStation)를 상속 받고 있다.


세차주유소 클래스는 상속을 받고 있기 때문에 부모클래스의 기능과 속성에 접근할 수 있으며, 더해서 자기 자신이 가진 세차 기능도 수행할 수 있다.



또 주목할 점은 (주로 JAVA언어를 사용하기 때문에 자바언어와 비교해본다....)

주유소(GasStation)클래스의 생성자이다.

 

public GasStation() : this(100, 50) { }

이 코드는 기본생성자가 다른 생성자를 부르는 코드인데. 클래스 단위의 상속 개념처럼 문장을 구성한다.

JAVA에서는 생성자의 대괄호 블럭안에서 첫번째 라인에 this(인자,인자,,,,)의 형식으로 사용하지만.

c#에서는 대괄호 블럭앞에서 : this(인자,인자,,,,,)의 형식으로 쓰이고 있다.


상속을 하지 못하게 막고 싶을 경우도 있다.

그럴 때는 sealed 예약어를 사용하면 된다,

sealed class GasStation {}

이런 형식으로 사용하면 이 클래스는 상속을 할 수 없게 된다.

Comments
최근에 올라온 글
최근에 달린 댓글
TAG
more
Total
Today
Yesterday