본문 바로가기

Study/Kotlin Study

(33)
[Kotlin] data 클래스 + 항공대학교 김철기 교수님의 객체 지향 프로그래밍 과목 내용를 정리한 글입니다. 클래스의 동등성 일반 클래스의 동등성 비교를 위해서는 equals() 및 hashCode()의 커스텀 구현이 필요하다. class Person(val firstName: String, val lastName: String, val age: Int) fun main() { val person1 = Person("John", "Doe", 25) val person2 = Person("John", "Doe", 25) val person3 = person1 println(person1 == person2) // false println(person1 == person3) // true } < eq..
[Kotlin] enum 클래스 + 항공대학교 김철기 교수님의 객체 지향 프로그래밍 과목 내용를 정리한 글입니다. enum 클래스 특정 부류의 상수 집합을 표현하기 위한 클래스이다. - 한정된 개수의 인스턴스를 갖고 있다. (추가로 인스턴스를 생성할 수 없다.) enum class WeekDay { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; // enum 클래스에서는 세미콜론을 사용하여 인스턴스 종류의 끝을 나타낸다. fun isWorkDay() = this == SATURDAY || this == SUNDAY } fun main() { println(WeekDay.MONDAY.isWorkDay()) // false print..
[Kotlin] 인터페이스 + 항공대학교 김철기 교수님의 객체 지향 프로그래밍 과목 내용를 정리한 글입니다. 인터페이스 일종의 추상 클래스로, 추상 클래스보다 제약이 많으나, 여러 개를 상속 받도록 할 수 있는 특수한 개념이다. - 원래 클래스는 하나의 상위 클래스만 상속 받을 수 있다. - 하지만, 인터페이스는 갯수에 제한 없이 상속이 가능하다. - class 대신에 interface라는 예약어로 시작한다. - interface의 멤버는 default가 추상(abstract) 멤버이다. => 즉, 인터페이스는 자격의 의미이다. (상속 받는 클래스에게 자격을 부여한다.) interface Vehicle { // 아래 프로퍼티는 abstract가 붙은 것으로 간주한다. val currentSpeed : Int fun move() f..
[Kotlin] 추상 클래스와 추상 멤버 + 항공대학교 김철기 교수님의 객체 지향 프로그래밍 과목 내용를 정리한 글입니다. 추상 클래스와 추상 멤버 추상 클래스: 직접 인스턴스화 할 수 없고, 다른 클래스의 상위 클래스 역할만 할 수 있는 클래스이다 abstract class Entity(val name: String) class Person(name: String, val age: Int) : Entity(name) fun main() { // val entity = Entity("Unknown") // error val entity: Entity = Person("John", 32) // OK } 추상 클래스의 생성자 추상 클래스의 생성자는 하위 클래스의 위임 호출로만 호출 가능하다. abstract class Entity(val name:..
[Kotlin] 공통 메소드 + 항공대학교 김철기 교수님의 객체 지향 프로그래밍 과목 내용를 정리한 글입니다. Kotlin.Any 클래스 코틀린 클래스 계층 구조의 최상위 클래스이다. 모든 클래스는 Any를 직간접적으로 상속한다. 상위 클래스를 명시하지 않으면 자동으로 Any가 상위 클래스가 된다. Any 클래스의 정의는 다음과 같다. open class Any { public open operator fun equals(other: Any?) public open fun hashCode():Int public open toString(): String } equal() 함수 구조적 동등성 (==, !=)을 정의한다. open class Address(val city: String, val street..
[Kotlin] 타입 검사와 캐스팅 + 항공대학교 김철기 교수님의 객체 지향 프로그래밍 과목 내용를 정리한 글입니다. 컴파일 시간의 타입 검사 컴파일 시, 변수의 타입에 맞추어 연산 검사를 수행한다. fun main() { val objects = arrayOf("1", 2, "3", 4) // Any의 배열이 된다. for(obj in objects) { // obj의 타입: Any println(obj * 2) // any 타입에는 곱하기 연산을 할 수 없으므로 에러 발생 } } is 연산자 is 연산자: is의 왼쪽 타입이 is의 오른쪽에 해당하면 true 반환한다. fun main() { val objects = arrayOf("1", 2, "3", 4) var sum = 0 for(obj in objects) { if (obj i..