using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

 

class Human

{

    protected string Name;

    protected int Age;

    public Human(string aName, int aAge)

    {

        Name = aName;

        Age = aAge;

    }

    public virtual void Intro()

    {

        Console.WriteLine("Name : " + Name);

        Console.WriteLine("Age : " + Age);

    }

}

 

class Student : Human

{

    protected int StNum;

    public Student(string aName, int aAge, int aStNum) : base(aName, aAge)

    {

        StNum = aStNum;

    }

    public override void Intro()

    {

        base.Intro();

        Console.WriteLine("stuNumber : " + StNum);

    }

    public void Study()

    {

        Console.WriteLine("study");

    }

}

 

class Program

{

    static void Main()

    {

        Student Kim;

        Kim = new Student("Minhwa Jin", 25, 921223);

        Kim.Intro();

        Kim.Study();

    }

}

 

base(aName, aAge)

부모의 생성자를 호출하여 초기화하는 구문입니다.

기존의 StNum은 직접 자신의 생성자에서 초기화를 하게 되구요.


여기서 base를 주석처리를 하게 되면 기반 클래스(부모)의 디폴트 생성자가 호출되는데요.

Human에서는 디폴트 생성자가 없기 때문에 에러가 납니다.


이름과 나이를 출력하는 코드가 기반 클래스(부모)에 작성되어있기 때문에

Intro를 호출하면 출력이 되겠지요~


그리고 기본적으로 c#상속은 public 상속만 지원하며, 다중 상속을 지원하지 않고

상속없이 단독 클래스를 정의하는 것도 허용되지 않는다고 합니다~


실행결과





아 참고로 제나이 22 입니다...-_-;


신고

'Windows Programming > Windows::C#' 카테고리의 다른 글

[C#] 메서드 재정의(virtual, override)  (0) 2013.03.31
[C#] 상속 예제  (0) 2013.03.31
C# GUI 구구단 프로그램  (0) 2012.02.16
윈도우즈 폼 예제  (0) 2012.02.16
C# 콘솔 예제(성적관리 프로그램)  (0) 2012.02.16

+ Recent posts

티스토리 툴바