상속은 객체지향 언어에서 가장 중요한 개념!
- 클래스는 다수의 계층적인 상속 구조를 가질 수 있다. 부모 클래스가 또 다른 클래스의 자식 클래스가 될 수 있으며, 이를 통해 상속의 계층 구조를 형성할 수 있다.
- 깊이가 깊어질수록 클래스 간 관계가 복잡해지기 때문에 적절한 상속의 깊이를 유지하고 적절하게 사용하는 것이 중요!
클래스 Animal을 상속받은 Dog, Cat 클래스를 만들어보자!
// 부모 클래스 public class Animal { public string Name { get; set; } public int Age { get; set; } public void Eat() { Console.WriteLine("Animal is eating."); } public void Sleep() { Console.WriteLine("Animal is sleeping."); } } // 자식 클래스 public class Dog : Animal { public void Bark() { Console.WriteLine("Dog is bark."); } } public class Cat : Animal { public void Sleep() { Console.WriteLine("Cat is sleeping."); } public void Meow() { Console.WriteLine("Cat is meow."); } } // 사용 예시 Dog dog = new Dog(); dog.Name = "Bobby"; dog.Age = 3; dog.Eat(); // Animal is eating. dog.Sleep(); // Animal is sleeping. dog.Bark(); // Dog is barking Cat cat = new Cat(); cat.Name = "KKami"; cat.Age = 10; cat.Eat(); // Animal is eating. cat.Sleep(); // Cat is sleeping. cat.Meow(); // Cat is meow.
Dog와 Cat에 선언되어 있지 않은 Eat(), Sleep()을 Animal에서 상속받아 사용하는 모습!!!
※ Cat의 Sleep()의 경우, 부모와 자식 모두 선언되어 있을 때, Animal의 Sleep()을 숨기고 Cat의 Sleep()이 실행된다. → 이와 같은 방법은 추천하지 않는다고 한다.