본문 바로가기
프로그래밍/C#.net

계승

by 건우아빠유리남편 2009. 8. 24.
반응형

계승(inheritance)이란 오브젝트지향의 중심을 다루는 개념으로, 어떤 클래스에서 성질을 물려받아서 새로운 클래스를 만드는 것이다. 계승은 파생(derivation) 이라고도 부른다.

 

■계승관계

예를 들면 인간과 학생이라는 2개의 클래스에 관해서 생각해 보자.

학생이라면 반드시 인간이라는 특징을 가지고 있다.

그것과 반대로 인간이라고 반드시 학생이지는 않다.

즉, 학생은 인간의 특별한 경우라고 할 수 있다.

 

다시말해서, 인간은 이름,나이 등의 속성이 있다.

학생은 인간의 일부분이기때문에 당연히 2개의 속성을 가지고 있다.

여기에다 학생은 학번이라는 속성도 가지고 있다.

 

이것처럼, 어떤 클래스A에 클래스B를 포함하는 관계에 있을때는, 이런 관계를 계승관계라고 하고, B는 A를 계승한다. 혹은 B는 A에서 파생된다.라고 한다.

그리고, 이 때에 클래스A를 base class또는 super class라고 부르고, 클래스B를 파생클래스(derived class)또는 sub class라고 한다.

 

■클래스의 계승

class 파생클래스이름 : base클래스이름

{

  파생클래스의 정의

}

 

예를 들어

class Person
{
  public string name; // 이름
  public int    age;  // 나이
}

class Student : Person
{
  public int    id;   // 학번
}

 

클래스를 이용하는 쪽에서는 아래와 같이 된다.

 

Person p1 = new Person();
p1.name = "이호리";
p1.age  = 18;

 

Student s1 = new Student();
s1.name = "이호리"; // Person 의 멤버를 그대로 이용할 수 있다.
s1.age  = 18;
s1.id   = 50012;

 

Person p2 = s1; // Student는 Person으로서 취급할 수 있다.

 

Student s2 = p1; // 그러나,Person은 Student로 취급할 수 없다.//이건 에러난다.!!

 

참조

http://ufcpp.net/study/csharp/oo_inherit.html


반응형

'프로그래밍 > C#.net' 카테고리의 다른 글

추상화  (0) 2009.08.24
virtual method  (0) 2009.08.24
정적변수,정적메소드  (0) 2009.08.24
프로퍼티  (0) 2009.08.24
은폐  (0) 2009.08.24

댓글