회원 로그인
|
클래스 상속
클래스 상속
클래스에서 다른 클래스의 맴버를 받는 것이 클래스의 상속이라 한다.
기본(부모) 클래스와 파생(자식) 클래스
파생된 클래스는 무한으로 만들 수 있지만 기본 클래스는 하나뿐이다.
상속의 정의
제 목: 시오리의 비경 발견
분 야: 판타지
저 자: 앤크
제 목: 월간 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개(1/15페이지)
번호 | 제목 | 글쓴이 | 조회 | 날짜 |
---|---|---|---|---|
285 | [Python] 동적 import - 모듈을 변수로 받아오기 | 푸딩뱃살 | 412 | 2022.10.27 10:45 |
284 | [Python] 파이썬 3.7.7과 3.9.7의 os.path.expanduser() 차이 | 푸딩뱃살 | 455 | 2022.08.18 12:22 |
283 | [Python] error: Microsoft Visual C++ 9.0 is required. | 푸딩뱃살 | 684 | 2022.08.03 13:35 |
282 | [Python] pyscript | 푸딩뱃살 | 452 | 2022.06.09 11:21 |
281 | [Python] float is / float not is | 푸딩뱃살 | 593 | 2022.03.02 15:03 |
280 | [Python] 이터널 문자열 f | 푸딩뱃살 | 833 | 2022.01.27 16:35 |
279 | [Python] is와 ==의 차이 | 푸딩뱃살 | 485 | 2021.11.25 15:54 |
278 |
[Python] Error: ImportError: file |
푸딩뱃살 | 916 | 2021.11.16 11:24 |
277 | [Python] 파이썬 디컴파일 - uncompyle6 | 푸딩뱃살 | 774 | 2021.11.10 14:46 |
276 | [Python] 파이썬 확장자 설명 | 푸딩뱃살 | 550 | 2021.11.03 14:38 |
275 | [참고] 웹 fbx 뷰어 | 푸딩뱃살 | 470 | 2021.10.19 15:46 |
274 | [Python] enumerate() | 푸딩뱃살 | 499 | 2021.10.13 14:44 |
273 | [Python] 아나콘다에서 가상 환경 | 푸딩뱃살 | 718 | 2020.11.21 00:26 |
272 | [Python] pip로 설치 때 퍼미션 에러 | 푸딩뱃살 | 1264 | 2020.06.06 17:13 |
271 | [Python] OpenCV 10-3. 이미지 Thresholding - Otsu's Binarizatio | 푸딩뱃살 | 673 | 2020.06.05 14:01 |
270 | [Python] OpenCV 10-2. 이미지 Thresholding - Adaptive Threshold | 푸딩뱃살 | 693 | 2020.06.05 13:58 |
269 | [Python] OpenCV 10-1. 이미지 Thresholding | 푸딩뱃살 | 578 | 2020.06.05 13:56 |
268 | [Python] OpenCV 9-2. 색 추적 | 푸딩뱃살 | 771 | 2020.06.02 23:29 |
267 | [Python] OpenCV 9-1. 색공간 바꾸기 | 푸딩뱃살 | 639 | 2020.06.02 23:27 |
266 | [Python] OpenCV 8-3. 이미지 비트 연산 | 푸딩뱃살 | 528 | 2020.06.02 23:21 |