간단한 상속 예제
using System;
namespace ConsoleApplication1
{
class Dog
{
//개의 일반적인 속성과 행동을 정의
public string kinds;
public void jitda()
{
Console.WriteLine("일반개가 짖다.");
}
}
//파생클래스인 Pudle은 Dog의 전부를 상속받아서 사용하며, 자신만의 메소드인 work()를 구현,
//상속은 상위클래스의 속성, 행동을 재활용하고 자신만의 속성(멤버변수, 필드)과 행동(메소드)을 정의
//상속을 함으로서 공통적인 부분은 재활용 할 수 있다.
class Pudle : Dog
{
public Pudle() //생성자, new Pudle() 할때 호출됨
{
base.kinds = "푸들"; //기반클래스인 Dog의 kinds를 의미한다.
Console.WriteLine("푸들 생성자~~");
}
//일반개와 달리 푸들은 일을 한다.
public void work()
{
Console.WriteLine("푸들이 일을 합니다~");
}
}
class DogTest
{
static void Main()
{
Pudle p1 = new Pudle();
p1.jitda();
p1.work();
//Pudle이 자식 클래스이므로 좌측 p2의 타입에 부모클래스인 Dog이 올수있다.
//하위클래스는 완벽한 상위클래스 임
//하위클래스를 new하면 먼저 부모클래스를 생성한 후 자식클래스가 생성되므로
Dog p2 = new Pudle();
Console.WriteLine(p2.kinds);
p2.jitda();
//p2.work(); //에러, p2의 타입인 Dog에는 work메소드가 정의 되어 있지않다.
}
}
}
[결과]
푸들 생성자~~
일반개가 짖다.
푸들이 일을 합니다~
푸들 생성자~~
푸들
일반개가 짖다.