다형성(Polymorphism)
- 상속의 의미를 도와 준다.
- 상속을 통해서 형성된 부모 자식 클래스들간의 효과적인 관리를 가능하게 해 준다.
-
다형성이란 무엇인가?
- 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 한다.
- 여러 개의 개별적인 클래스를 하나의 부모클래스 객체로 통합 관리하여 그 효율성을 높인 것.
용도
동일한 자료 형으로 된 데이터는 배열로 묶어서 관리
서로 다른 자료 형들로 된 데이터는 클래스로 묶어서 관리
위의 두 가지를 도와주는 개념이 다형성.
단 조건은 반드시 부모 클래스가 같아야 한다.
상속받은 클래스들 및 부모클래스를 통틀어서 관리할 때는 다형성을 사용한다.
규칙
- 필드는 무조건 상위 클래스의 필드만 사용할 수 있다.
- 메소드도 상위 클래스의 메서드만 사용할 수 있는데 오버라이딩 되었다면 하위클래스의 메서드가 실행된다. 다시 말하면, 하위클래스에서 부모클래스의 함수를 재정의했다면 다형성으로 부모클래스의 함수를 호출하였다 하더라도 자식 클래스에서 재정의된 함수가 실행된다.
- 함수는 자식 클래스에서 오버라이딩 하면 오버라이딩된 함수가 자동으로 호출이 되는데 변수의 경우는 자식 클래스의 변수를 불러 올 수는 없는가? 있다. 자식 클래스에서 재정의(오버라이딩된)함수를 통해서 자식 클래스의 변수(맴버)에 접근할 수 있다.
특징
부모클래스의 맴버들만 사용가능.
예외) 오버라이딩된 메서드는 하위 클래스의 메서드가 실행 됨
어떠한 경우에 하위 클래스에서 부모 클래스에 있는 함수를 재정의 하는가?
부연설명
다형성을 사용할때는 부모 클래스의 인스턴스에 자식 클래스를 담는다.
이러한 이유 때문에 부모 클래스의 인스턴스를 통해서 부모 클래스의 맴버로만 접근이 가능한 것이다. 함수등등을 포함.
자식 클래스에서 재정의된 덮어씌워진 것이므로 당연히 동일한 함수가 호출이 되더라도 부모 클래스에서 그 함수는 이미 덮어 씌워졌으므로 덮어 씌워진 자식 클래스의 함수가 호출이 되는 것이다.
'C# > Tip' 카테고리의 다른 글
객체 지향 프로그래밍의 5대 원칙 (0) | 2020.04.22 |
---|---|
객체 지향 프로그래밍의 5가지 특징 (0) | 2020.04.22 |
단축키모음 (0) | 2020.04.09 |