회원 로그인
정보기억 정보기억에 체크할 경우 다음접속시 아이디와 패스워드를 입력하지 않으셔도 됩니다.
그러나, 개인PC가 아닐 경우 타인이 로그인할 수 있습니다.
PC를 여러사람이 사용하는 공공장소에서는 체크하지 마세요.
소셜네트워크 서비스를 통해서 로그인하시면 별도의 로그인 절차없이 회원서비스를 이용하실 수 있습니다.


최근 게시물

1.노션에서 작성 중

1.노션에서 작성 중

개편하기 전까지 노션에서 작성 중

2024.04.04//read more

2.ChatGPT

2.ChatGPT

OpenAI로 대규모 언어 모델대화형...

2023.03.16//read more

3.노코딩 게임 엔진 - 빌..

3.노코딩 게임 엔진 - 빌..

빌드 지원안드로이드iOS윈도우즈특이사...

2023.03.14//read more

4.(완료) 미접속 회원 정..

4.(완료) 미접속 회원 정..

[완료] 36명의 회원을 정리하였습니...

2023.02.16//read more

5.매뉴얼 플러스 - 전자제..



안정적인 DNS 서비스 DNSEver
DNS Powered by DNSEver.com


클래스 상속

푸딩뱃살 | 2014.11.17 23:35 | 조회 3832
클래스 상속

클래스에서 가지고 있는 맴버(메소드, 변수 등)을 다른 클래스에서 이어 받는 것, 즉 상속을 받는 클래스에서 상속해주는 클래스의 맴버를 사용할 수 있다.
상속 시킬 클래스를 기본 클래스 또는 부모 클래스, 상속 받을 클래스를 파생 클래스 또는 자식 클래스라 한다.
파생 클래스에서 상속 맴버를 정의하지 않아도 사용할 수 있고, 파생 클래스 안에서도 독자적으로 맴버를 정의할 수가 있다. 

파생 클래스에서 기본 클래스의 맴버를 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#이 보이는 그림책
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 line 1: Ba 푸딩뱃살 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