C#에서 상속을 구현하는 방법은?
_____A1: 상속(Inheritance)은 기존 클래스(기본 클래스 또는 부모 클래스)의 멤버(필드, 메서드 등)를 새로운 클래스(파생 클래스 또는 자식 클래스)가 물려받아 사용하는 객체지향 프로그래밍의 핵심 개념입니다. 이를 통해 코드 재사용성과 유지보수성을 높일 수 있습니다.
Q2: C 에서 기본적인 상속 문법은 어떻게 되나요?
A2: C 에서 클래스 상속은 콜론(:)을 사용하여 선언합니다. 예를 들어, `class Parent { }`라는 기본 클래스가 있을 때, `class Child : Parent { }`처럼 작성하면 Child 클래스가 Parent 클래스를 상속받습니다.
```csharp
class Parent
{
public void Greet()
{
Console.WriteLine("Hello from Parent");
}
}
class Child : Parent
{
public void SayBye()
{
Console.WriteLine("Goodbye from Child");
}
}
```
Q3: 상속 가능한 멤버와 상속 불가능한 멤버는 무엇인가요?
A3:
- 상속 가능 멤버: `public`, `protected`, `protected internal` 멤버는 파생 클래스에서 접근하여 사용할 수 있습니다.
- 상속 불가능 멤버: `private` 멤버는 파생 클래스에서 직접 접근할 수 없지만, 공개된 메서드를 통해 우회 접근이 가능합니다.
Q4: C 에서 다중 상속이 가능한가요?
A4: C 클래스는 다중 상속을 지원하지 않습니다. 즉, 한 클래스는 오직 하나의 부모 클래스만 가질 수 있습니다. 다만, 인터페이스는 여러 개를 동시에 구현할 수 있습니다.
Q5: base 키워드는 무엇이며 어떻게 사용하나요?
A5: `base` 키워드는 파생 클래스 내에서 부모 클래스의 멤버에 접근하거나 부모 클래스의 생성자를 호출할 때 사용합니다.
```csharp
class Parent
{
public Parent(string message)
{
Console.WriteLine(message);
}
}
class Child : Parent
{
public Child() : base("Hello from Parent constructor")
{
Console.WriteLine("Child constructor");
}
}
```
Q6: 메서드 오버라이딩은 어떻게 하나요?
A6: 부모 클래스에서 `virtual` 키워드를 사용해 오버라이딩 가능한 메서드를 정의하고, 자식 클래스에서는 `override` 키워드를 이용해 재정의할 수 있습니다.
```csharp
class Parent
{
{
Console.WriteLine("Parent speaks");
}
}
class Child : Parent
{
public override void Speak()
{
Console.WriteLine("Child speaks");
}
}
```
Q7: 상속과 관련된 접근 제한자 종류 및 의미는 무엇인가요?
A7:
- `public`: 모두에게 접근 가능
- `protected`: 상속받은 자식 클래스에서 접근 가능
- `private`: 해당 클래스 내에서만 접근 가능, 상속 자식에서 직접 접근 불가
- `internal`: 같은 어셈블리 내에서 접근 가능
- `protected internal`: 같은 어셈블리 내 또는 파생 클래스에서 접근 가능
Q8: sealed 클래스란 무엇인가요?
A8: `sealed` 키워드는 해당 클래스를 상속할 수 없도록 제한하는 키워드입니다. 예:
```csharp
sealed class FinalClass
{
// ...
}
```
이 클래스는 다른 클래스에서 상속할 수 없습니다.
Q9: abstract 클래스와 상속 관계는 어떻게 되나요?
A9: `abstract` 클래스는 인스턴스화할 수 없으며, 상속을 전제로 만든 클래스입니다. 자식 클래스는 반드시 `abstract` 클래스의 추상 메서드를 구현해야 합니다.
```csharp
abstract class Animal
{
public abstract void MakeSound();
}
class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("Bark");
}
}
```
Q10: 상속과 다형성의 관계는 무엇인가요?
A10: 상속을 통해 부모 클래스 타입의 변수가 자식 클래스 객체를 참조할 수 있으며(업캐스팅), 가상 메서드(`virtual`, `override`)를 통해 실행 시점에 자식 클래스 메서드가 호출되는 다형성을 구현할 수 있습니다.
---
이처럼 C 에서 상속은 `class Child : Parent` 형식으로 선언하며, 접근 제한자와 키워드를 활용해 상속 관계를 관리합니다.
작성자:
박채린 [비회원]
| 작성일자: 1년 전
2024-09-09 08:38:53
조회수: 182 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 182 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.