superclass #subclass 4

Kotlin : Type-compatibility (ft. Upcast, Downcast)

1. Type-compatibility, 타입 호환성 일반적으로 더 일반적인 타입의 변수에 더 구체적인(더 전문화된) 타입의 개체를 할당하는 것은 항상 가능하다. 더 일반적인 유형은 더 적은 수의 가능한 작업을 정의하고 하위 타입이 상위 타입의 모든 작업을 허용한다는 것이 보장되어 있기 때문이다. 밑에 예를 보자. a와 p는 당연히 문제될 게 전혀 없다. 반면에 좀 살펴봐야 할 부분은 p2와 a2 다. p2는 Actor 타입이 상위 타입인 Person 타입의 모든 작업들이 허용 가능하니 문제되지 않는다 [모든 영화배우는 사람이다]. a2는 Person 타입이 하위타입(더 전문화된)인 Actor의 모든 작업들이 실행 가능하지 않으므로 프로그래밍 실행 전 이미 컴파일러 에러가 뜬다 [모든 사람은 영화배우가 ..

언어/Kotlin 2022.10.31

Kotlin : Supertypes and Subtypes

1.타입과 클래스 속성의 상속은 코드중복을 피할 수 있는, 합리적인 방법일 뿐만이 아니라 객체들 사이간에 타입관계들을 결정짓는다. 한 객체의 Type은 그 객체에서 수행할 수 있는 모든 작업들을 결정짓는다. 숫자 자료형들이 특정 연산만 가능한 것처럼, 객체의 유형에 따라 특정 작업만이 가능하다. 예를 들어 객체 내에 정의된 메서드들. 작업에는 보여지는 속성의 읽기와 쓰기도 포함된다. 1.5 Supertypes and Subtypes, 상위타입과 하위타입 Director 클래스는 Person 클래스에서 파생되었고 확장되었다. '확장'이란 속성과 메서드들이 추가돠는 동시에 Person 클래스가 가지고 있던 기존 속성 및 메서드가 모두 상속되는 것을 의미한다. 이는 하위 클래스의 객체들이 상위 클래스의 객체들..

언어/Kotlin 2022.10.30

Kotlin : Polymorphie (ft.오버라이딩)

1. Polymorphie 란? 다형성(Polymorphie)은 공통 인터페이스를 통해 다양한 클래스의 구현에 액세스 할 수 있게 해준다. Polymorphie는 그리스어에서 유래했으며 대략, "다양한 형태"를 의미하며 객체 지향 프로그레밍의 중심 개념 중 하나이다. 이는 우리가 같은 방식으로 매우 다르게 설계된 객체를 사용할 수 있게 해준다. 저번의 클래스 계층 구조의 예시로 들었던 것이다. 탈것 클래스 내에 ' 출발하다()' 라는 메서드가 있다고 가정해보자. 그러면 자전거 클래스와 차 클래스의 출발하다()라는 메서드의 구조는 서로 당연히 다를 것이다. (출발하다() 메서드의 어떤 구현이 선택되는지에 대한 결정은 런타임에서 발생한다고 한다.) 2. Overriding 오버라이딩 Super Class의 ..

언어/Kotlin 2022.10.30

Kotlin : 상속 (inheritance)

1. 상속이란? 객체지향 프로그래밍에서 상속은 굉장히 중요한 개념 중 하나이다. '상속'을 통해 반복되는 코드의 양을 줄일수도 있고, 다른 클래스가 가지고 있는 기능(속성, 함수 등)들을 상속받아 그대로 사용할 수 있기 때문이다. 상속하는 쪽을 Super Class, (엄마클래스, 아빠클래스라 부르기도 한다고 한다) 상속받는 쪽을 Sub Class (자식클래스라고도 부름) 라 한다. 왼쪽 그림을 보자. Super Class 에는 var1,var2 이렇게 두개의 변수와 methodeA,methodeB 두개의 메서드를 가기고 있는 반면, Super Class 를 상속받은 Sub Class 는 Super Class 가 가지고 있던, 기존의 두 변수와 두 메서드 뿐만이 아니라, 새로운 속성과 메서드를 가지고 있..

언어/Kotlin 2022.10.20