다형성 (3) 썸네일형 리스트형 [Kotlin] 클래스의 다형성 Drink 클래스와 이를 상속받은 Cola 클래스가 있다면 Cola의 인스턴스를 만들 때는 Drink의 내용을 담는 공간에 Cola의 내용을 담는 공간이 추가되어 생성된다. var a: Drink = Cola() Drink를 담는 변수에 저장하면 Drink의 기능만 사용하게 된다. → Up-Casting : 상위 자료형인 수퍼클래스로 변환 var b: Cola = Cola() *타입추론 기능으로 Cola 자료형은 생략 가능 Cola를 담는 변수에 저장하면 Cola의 기능까지 모두 사용할 수 있다. Down-Casting: Up-Casting된 인스턴스를 다시 하위 자료형으로 변환 다운캐스팅은 별도의 연산자 필요 - as : 변수를 호환되는 자료형으로 변환해주는 캐스팅 연산자 var a: Drink = C.. [C++] OOP 다형성 - 추상 클래스(abstract class) '추상'이란 단어의 뜻은 '구체성이 없어 뜻이 분명하지 않다'이다. 따라서 추상 클래스는 기능이 구체적으로 작성되지 않은 클래스라는 뜻으로 받아들일 수 있다. C++에서 추상 클래스는 하나 이상의 순수 가상 함수(pure virtual function)를 지닌 클래스를 말한다. 이런 추상 클래스를 이용하면 다형성을 가진 다양한 함수들을 정의할 수 있다. 제작하고자 하는 객체들이 반드시 지닌 기능을 추상 클래스의 순수 가상 함수로 작성해 놓으면, 해당 클래스를 이용하여 만든 자식 클래스에서는 이 가상 함수를 재정의하여 사용하면 된다. 즉, 추상 클래스는 객체를 생성하기 위한 목적의 클래스가 아니라 상속을 통해 다양한 클래스의 생성을 위한 인터페이스라고 생각하면 된다. (Java의 경우 상속을 extends.. [C++] OOP 다형성 - 가상 함수(virtual function) 가상 함수를 사용하게 되면 부모 클래스에서 선언한 함수가 자식 클래스에서 재정의 될 수 있다고 알려주게 되어 기본 클래스 타입의 포인터 또는 참조를 통해 자식 클래스의 객체를 참조하여 해당 객체에 대한 함수를 실행할 수 있게 된다. 가상 함수는 순수 가상 함수(pure virtual function)와 일반 가상 함수(virtual class)로 구분되어 사용된다. 일반 가상 함수(virtual function)는 부모 클래스에서 선언한 메소드를 자식 클래스에서 재정의해서 사용해도 된다는 가능성을 열어두는 것이다. 앞의 오버라이딩에서 했던 것처럼 부모 클래스에서도 함수의 기능이 정의되어 있고 필요하다면 기능을 확장하거나 변경하는데 virtual 키워드를 통해 포인터 타입이 아닌 참조하는 객체의 메서드를 .. 이전 1 다음