C# Inheritance(상속)
대상:
클래스
목적:
클래스의 재사용-> 코드량 줄이기
상속 클래스의 역할
부모클래스 : 상속을 하는 클래스
(parent class, base class, 상위 클래스)
자식 클래스 : 상속을 받는 클래스
(child class, derived class, 파생 클래스)
상속 관계 표시 및 형식
class Parent
{
}
class Child : Parent
{
}
Parent class
↑
Child class
상속 관계 표시는 화살표로 하며, 화살 정방향이 부모를 가리키고, 역방향은 자식을 향한다
상위 클래스 접근 지정자
class Parent
{
private //Child 에서 접근 불가
protected //Child만 접근 가능
public //Child 와 Main과 같은 외부에서도 접근 가능
}
class Child : Parent
{
}
ex1)
using System;
namespace Inheritance
{
class A
{
private void PrintPrivate()
{
Console.WriteLine("private");
}
protected void PrintProtected()
{
Console.WriteLine("protected");
}
public void PrintPublic()
{
Console.WriteLine("public");
}
}
class B : A
{
public void Print()
{
//PrintPrivate(); //접근 불가능
PrintProtected();
PrintPublic();
}
}
class Program
{
static void Main(string[] args)
{
B Test = new B();
Test.Print();
Test.PrintPublic();
}
}
}
상속 관계에서 생성자, 소멸자 호출 순서
- 생성자 호출 : 상위 -> 하위
- 소멸자 호출 : 하위 -> 상위
ex2)
using System;
namespace Inheritance
{
class A
{
public A()
{
Console.WriteLine("A 생성자");
}
~A()
{
Console.WriteLine("A 소멸자");
}
private void PrintPrivate()
{
Console.WriteLine("private");
}
}
class B : A
{
public B()
{
Console.WriteLine("B 생성자");
}
~B()
{
Console.WriteLine("B 소멸자");
}
}
class Program
{
static void Main(string[] args)
{
B test = new B();
}
}
}
코드 실행 결과