百犬より一打C#入門-対象向け2)継承性
11861 ワード
Point-#継承#仮想#オーバーライド
class 생성할_클래스 : 부모 클래스
1)Car 009等級:自動車通用行為の方法
2)ガソリン車クラスと電気自動車クラスはCar 009クラスを継承しているが、給油方式は異なる.
namespace RoadBook.CsharpBasic.Chapter05.Examples
{
class Ex009
{
public void Run()
{
GasolineCar008 gasolineCar = new GasolineCar008();
gasolineCar.Color = "검정";
gasolineCar.Size = "SUV";
ElectronicCar008 electronic = new ElectronicCar008();
electronic.Color = "초록";
electronic.Size = "경차";
Console.WriteLine("{0}색 {1}가", gasolineCar.Color, gasolineCar.Size);
gasolineCar.Go();
Console.WriteLine("{0}색 {1}가", electronic.Color, electronic.Size);
electronic.Left();
}
}
class Car009
{
public string Color { get; set; }
public string Size { get; set; }
public void Engine_on()
{
Console.WriteLine("시동을 켭니다.");
}
public void Engine_off()
{
Console.WriteLine("시동을 끕니다.");
}
public void Go()
{
Console.WriteLine("전진합니다.");
}
public void Back()
{
Console.WriteLine("후진합니다.");
}
public void Left()
{
Console.WriteLine("좌회전합니다.");
}
public void Right()
{
Console.WriteLine("우회전합니다.");
}
/*
* 부모 클래스에서 만든 가상의 클래스 (virtual 키워드 사용)
* virtual 키워드 : 자식 클래스에서 메소드 재정의가 가능하도록 '가상(virtual)의 메소드' 껍데기를 만든 것
* 만약 자식 클래스에서 메소드 재정의가 이루어지지 않는다면 부모의 기능을 물려 받게된다.
*/
public virtual void InputGas() // 기름을 넣는 행위
{
Console.WriteLine("기름을 넣습니다.");
}
}
// 부모 클래스로부터 상속받은 자식 클래스
/*
* GasolineCar009와 ElectronicCar009 클래스가 Car009을 상속한 코드이다.
* 부모 클래스는 자동차(Car008) 그 자체이다ㅏ.
* 자식클래스는 휘발유 자동차와 전기 자동차이다.
*
* class 생성할_클래스 : 부모 클래스
*/
class GasolineCar009 : Car009 {
/*
* 클래스간 상속 관계에서 메소드를 재정의하는 것을 오버라이드(override)고 한다.
* c#에서 virtual 메소드로 재정의 하는 메소드에 'override' 키워드로 명시하면 오버라이드 메소드로 만들어진다.
*/
public override void InputGas()
{
Console.WriteLine("휘발유를 넣습니다."); //자식 클래스에서 메소드 오버라이드
}
}
class ElectronicCar009 : Car009 {
public override void InputGas()
{
Console.WriteLine("전기를 넣습니다."); //자식 클래스에서 메소드 오버라이드
}
}
}
Reference
この問題について(百犬より一打C#入門-対象向け2)継承性), 我々は、より多くの情報をここで見つけました https://velog.io/@s00ny0ung/백견불여일타-C-입문-객체지향-2상속성テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol