회원 로그인
|
클래스 상속
클래스 상속
클래스에서 다른 클래스의 맴버를 받는 것이 클래스의 상속이라 한다.
기본(부모) 클래스와 파생(자식) 클래스
파생된 클래스는 무한으로 만들 수 있지만 기본 클래스는 하나뿐이다.
상속의 정의
제 목: 시오리의 비경 발견
분 야: 판타지
저 자: 앤크
제 목: 월간 C# 그림책
분 야: 컴퓨터
발 매 일: 20일
상속의 종류
기본 클래스의 맴버에 액세스 하는 방법의 종류들가 있다.
public 수식자 멤버
파생 클래스에서도 기본 클래스의 멤버를 자유롭게 사용할 수 있다.
기본 클래스의 멤버를 파생 클래스에서 사용할 수 없게 된다.
변수 a가 액세스할 수 없으므로 오류
보호 수준 때문에 'A.a'에 액세스할 수 없습니다.
protected 수식자 멤버
기본 클래스의 protected가 붙은 멤버는 기본 클래스 안과 이를 파생 클래스에서만 액세스할 수 있다.
다른 클래스에서 protected 멤버에 액세스할 수 없다.
다양한 수식자
sealed
sealed(실드)는 파생 클래스, 추상 클래스에서 상속되지 않도록 한다.
static
static(스태틱)은 필드나 메소드에 붙이는 수식자이다. 같은 클래스로부터 생성한 객체에서 static을 붙인 필드는 값이 같아진다.(공유한다)
어느 객체에도 같은 동작을 하는 메소드에는 static을 붙여 두는 것이 좋다.
a1의 a변수와 a2의 a변수는 같은 값인 50이 된다.
참고 서적> c#이 보이는 그림책
클래스에서 가지고 있는 맴버(메소드, 변수 등)을 다른 클래스에서 이어 받는 것, 즉 상속을 받는 클래스에서 상속해주는 클래스의 맴버를 사용할 수 있다. 상속 시킬 클래스를 기본 클래스 또는 부모 클래스, 상속 받을 클래스를 파생 클래스 또는 자식 클래스라 한다. 파생 클래스에서 상속 맴버를 정의하지 않아도 사용할 수 있고, 파생 클래스 안에서도 독자적으로 맴버를 정의할 수가 있다. 파생 클래스에서 기본 클래스의 맴버를 private 수식자를 사용하여 제한 할 수가 있다. 그러므로 다른 객체에서 액세스할 수가 없다. 아무것도 정의하지 않으면 private로 간주한다. private 이외에도 public이나 protected 등의 수식자가 있다. |
클래스에서 다른 클래스의 맴버를 받는 것이 클래스의 상속이라 한다.
기본(부모) 클래스와 파생(자식) 클래스
파생된 클래스는 무한으로 만들 수 있지만 기본 클래스는 하나뿐이다.
상속의 정의
//기본 클래스 class Animal { public string name_; //변수 정의 public int age_; //변수 정의 public void print() { ...... } } //파생 클래스 class Dog : Animal { public int birth_; //변수 정의 외 Animal 클래스의 변수들 사용 가능 } //객체 생성 class AnimalPrint { public static void Main() { Dog dog_ = new Dog(); //객체 생성하여 사용 } }
//예 using System; //기본 클래스 class Book { public string title_; public string genre_; public void printBook() { Console.WriteLine("제 목: " + title_); Console.WriteLine("분 야: " + genre_); } } //파생 클래스 class Novel : Book { public string writer_; public void printNov() { printBook(); Console.WriteLine("저 자: " + writer_); } } //파생 클래스 class Magazine : Book { public int day_; public void printMag() { printBook(); Console.WriteLine("발 매 일: " + day_ + "일"); } } //객체 생성 class Bookshelf { public static void Main() { Novel nov_ = new Novel(); nov_.title_ = "시오리의 비경 발견"; nov_.genre_ = "판타지"; nov_.writer_ = "앤크"; Magazine msg_ = new Magazine(); msg_.title_ = "월간 C# 그림책"; msg_.genre_ = "컴퓨터"; msg_.day_ = 20; nov_.printNov(); Console.WriteLine(); msg_.printMag(); } }#결과
제 목: 시오리의 비경 발견
분 야: 판타지
저 자: 앤크
제 목: 월간 C# 그림책
분 야: 컴퓨터
발 매 일: 20일
상속의 종류
기본 클래스의 맴버에 액세스 하는 방법의 종류들가 있다.
public 수식자 멤버
파생 클래스에서도 기본 클래스의 멤버를 자유롭게 사용할 수 있다.
//예 class A { public int a_ = 5; } class B:A { public void Calc() { int x_ = 5 + a_; } }private 수식자 멤버
기본 클래스의 멤버를 파생 클래스에서 사용할 수 없게 된다.
//예 class A { private int a_ = 5; } class B:A { public void Calc() { int x_ = 5 + a_; } }#결과
변수 a가 액세스할 수 없으므로 오류
보호 수준 때문에 'A.a'에 액세스할 수 없습니다.
protected 수식자 멤버
기본 클래스의 protected가 붙은 멤버는 기본 클래스 안과 이를 파생 클래스에서만 액세스할 수 있다.
다른 클래스에서 protected 멤버에 액세스할 수 없다.
다양한 수식자
sealed
sealed(실드)는 파생 클래스, 추상 클래스에서 상속되지 않도록 한다.
sealed class A { ...... } class B : A { //오류가 남 ...... }
static
static(스태틱)은 필드나 메소드에 붙이는 수식자이다. 같은 클래스로부터 생성한 객체에서 static을 붙인 필드는 값이 같아진다.(공유한다)
어느 객체에도 같은 동작을 하는 메소드에는 static을 붙여 두는 것이 좋다.
class A { public static int a_; } class B : A { A a1_ = new A(); A a2_ = new A(); A.a_ = 50; //A.a_ 변수 정의 }#결과
a1의 a변수와 a2의 a변수는 같은 값인 50이 된다.
참고 서적> c#이 보이는 그림책
댓글 0개
| 엮인글 0개
285개(11/15페이지)
번호 | 제목 | 글쓴이 | 조회 | 날짜 |
---|---|---|---|---|
85 | [C#] 생성자와 상속 base | 푸딩뱃살 | 3728 | 2014.11.21 02:09 |
>> | [C#] 클래스 상속 | 푸딩뱃살 | 3810 | 2014.11.17 23:35 |
83 | [C#] 클래스 예제 | 푸딩뱃살 | 3283 | 2014.11.03 23:03 |
82 | [C#] Main() 메소드 | 푸딩뱃살 | 3198 | 2014.11.02 23:43 |
81 | [C#] 인덱서 | 푸딩뱃살 | 2698 | 2014.11.01 01:09 |
80 | [C#] 속성 | 푸딩뱃살 | 2737 | 2014.11.01 00:41 |
79 | [C#] 생성자 | 푸딩뱃살 | 2848 | 2014.10.27 01:48 |
78 | [C#] public, private | 푸딩뱃살 | 3076 | 2014.10.25 22:32 |
77 | [C#] 오버로드(overload) | 푸딩뱃살 | 2667 | 2014.10.22 23:02 |
76 | [Python] 웹 파싱, 웹 클라이언트 프로그래밍 httplib | 푸딩뱃살 | 3464 | 2014.10.06 00:46 |
75 | [C#] 스코프(scope) | 푸딩뱃살 | 3277 | 2014.10.02 01:17 |
74 | [C#] 메소드 호출 | 푸딩뱃살 | 2717 | 2014.10.02 00:46 |
73 | [C#] 메소드(method) | 푸딩뱃살 | 3254 | 2014.10.02 00:30 |
72 | [C#] 필드(field) | 푸딩뱃살 | 3133 | 2014.10.02 00:06 |
71 | [C#] 객체(object)의 생성 | 푸딩뱃살 | 3607 | 2014.10.01 23:36 |
70 | [C#] 클래스(class)의 개념 | 푸딩뱃살 | 3513 | 2014.10.01 22:29 |
69 | [기본] 용어 - 클래스, 객체, 인스턴스, 메소드, 필드 | 푸딩뱃살 | 3949 | 2014.05.29 11:36 |
68 | [Python] Python 프로세스 리스트 추출 | 푸딩뱃살 | 8615 | 2014.05.20 16:02 |
67 | [Python] Python 환경 변수 설정 | 푸딩뱃살 | 4223 | 2014.05.20 12:46 |
66 | [Python] Python console 컬러 출력 | 푸딩뱃살 | 5192 | 2014.05.14 22:23 |