추상클래스 abstract
- 추상클래스란 간단히 말해 뼈대를 만드는 겁니다
- 추상클래스란 세부적인 구현은 자식에게 구현하도록 위임하고 본인은 최소한의 기능만 가지는 클래스입니다
- 그렇기 때문에 실체화 할 수 없고 이를 상속받은 자식들만 실체화가 가능합니다
- 가상함수와 다르게 무조건 자식에서 구현해야합니다, 가상함수는 자식이 구현안해도 부모꺼를 사용할 수 있습니다
구현방법
abstract 키워드를 사용하여 정의합니다
public abstract class Car //추상클래스 선언
{
public abstract void Drive(); //추상 메서드는 구현부가 없고 abstract를 붙여줘야합니다
}
public class Sedan : Car
{
public override void Drive() //추상메서드는 오버라이드로 반드시 구현해줘야함
{
Console.WriteLinde("운전중");
}
}
- 추상클래스는 상속계층 구조에서 계약역할을 합니다
- 이는 구조를 강제해 파생클래스들이 반드시 구현해야할 메서드를 구현하로독 해줍니다
is, as 키워드
- is 키워드는 간단히 말해 좌항의 객체가 우항에 담겨도 문제가 없는가? 를 판단하는 키워드이다
- as 키워드는 형변환인데 좌항을 우항으로 바꾼다, 하지만 실패시 null을 넣어줘서 더 안전한 변환이 가능하다
| 특징 | is 키워드 | as 키워드 |
| 목적 | 타입 호환성 검사 및 패턴 매칭 |
안전한 타입 변환 (캐스팅)
|
| 반환 값 | bool (검사), 변수 할당 (패턴 매칭) |
변환된 타입의 객체 또는 null
|
| 변환 실패 시 | false 반환 (예외 없음) |
null 반환 (예외 없음)
|
| 일반적인 사용 | if 또는 switch 조건문에서 타입 확인 |
캐스팅 후 null 체크를 통해 안전하게 객체 사용
|
null 조건부 연산자 ?.
- 객체가 null인지 아닌지 확인후 null이 아닐때만 멤버에 접근하거나 메서드를 호출할 수 있게 해주는 편리한 연산자입니다
- 기본적으로 연산자의 왼쪽에 있는 객체참조가 null인지 확인합니다
//기존방식
string car = null;
if(Sedan != null)
{
Car = Sedan.carname; //세단이 null이면 여기서 예외발생
}
//널 조건부 연산자 사용방식
string car = Sedan?.carname;
//만약 세단이 null이면 carname에 접근전에 연산이 멈추고 car는 null이 됩니다'C# > 객체지향 활용과 응용 개발' 카테고리의 다른 글
| 메모리와 GC(가비지 컬렉터) (0) | 2025.11.15 |
|---|---|
| 상속 (0) | 2025.10.10 |
| Static (0) | 2025.10.10 |
| 생성자와 클래스 심화 (0) | 2025.10.05 |
| 객체지향과 클래스 (0) | 2025.10.05 |