-
2024.03.05 - 상속(inheritance), 접근 제한자C# 2024. 3. 6. 01:10
상속(inheritance)은 캡슐화(encapsulation), 다형성(polymorphism)과 함께 객체 지향 프로그래밍의 주요한 특징들 중 하나이다. 상속을 사용하면 기존 클래스(부모 클래스)에 정의된 동작을 다시 사용, 확장 및 수정하는 새 클래스(자식 클래스)를 만들 수 있다.
- 상속의 구현(부모 클래스 Car와 자식 클래스 Truck, SUV)
class Car { public int velocity; public void Accel() { Console.WriteLine("붕~붕~"); } public void Break() { Console.WriteLine("끼이ㅣ익"); } }
자동차(Car)라는 개념이 있다. 자동차에는 트럭도 있고, SUV도 있고... 많은 종류의 자동차가 있다. 트럭도, SUV도 모두 자동차가 가진 기본 동작(속력, 전진, 후진 등등..)을 가지고 있다. 트럭과 SUV같이 자동차라는 개념으로 묶인 클래스를 만들 때 이런 동작을 각각 따로따로 만들어줄 필요가 없다. 자동차라는 부모 클래스에서 동작들을 상속받으면, 트럭과 SUV는 부모 클래스인 자동차가 가진 동작들을 가지게 된다.
class Truck : Car { } class SUV : Car { }
상속받는 자식 클래스 이름 옆에 : 와 부모 클래스 이름을 붙여주면 상속이 이루어진다.
Truck과 SUV 클래스는 상속받은 Car 클래스의 동작을 수행할 수 있다.
- 상속과 접근 제한자(public, protected, private)
접근 제한자로 접근이 제한되어 있는 클래스의 동작들은, 상속하더라도 자식 클래스에서 접근하지 못할 수 있다. (쉽게 말하면 부모 클래스에서 제한된 변수, 함수 들은 상속 받은 자식 클래스에서 사용이 불가능 할 수 있다.)
- public 접근 제한자
public으로 제한된 타입은 해당 클래스 내부, 상속한 자식 클래스 뿐만 아니라 클래스 외부에서 마음대로 접근할 수 있다. 정보 은닉을 위해서는 사용을 지양해야 하는 접근 제한자이다.
- protected 접근 제한자
protected로 제한된 타입은 해당 클래스와 상속한 자식 클래스에서만 접근이 가능하다.
- private 접근 제한자
private로 제한된 타입은 해당 클래스 내부에서만 접근 가능하다. 클래스 외부 뿐만 아니라 상속한 자식 클래스에서도 접근이 불가능하다.
'C#' 카테고리의 다른 글
2024.03.06 - 추상화(Abstract) (0) 2024.03.06 2024.03.06 - 오버라이딩(Overriding), 가상 함수(virtual) (0) 2024.03.06 2024.03.05 - 프로퍼티(Property) (0) 2024.03.05 2024.03.05 - static 변수 (0) 2024.03.05 2024.03.05 - 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy) (0) 2024.03.05