일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 무료 오라클 설치
- Oracle 윈도우 설치
- Oracle Express Edition
- oracle 18c
- Oracle 사용자명
- 윈도우 Oracle
- Oracle 사용자명 입력
- Orace 18c
- Oracle 18c 설치
- 오라클 캐릭터셋 확인
- Oracle 테이블 대소문자
- oracle
- ora-01722
- ORA-12899
- 오라클 캐릭터셋 조회
- ORA-00922
- 오라클 캐릭터셋 변경
- Oracle 초기 사용자
- Oracle 18c HR schema
- 서평단
- Oracle 테이블 띄어쓰기
- 무료 오라클 데이터베이스
- 비전공자를 위한 데이터베이스 입문
- Oracle 18c HR
Archives
- Today
- Total
The Nirsa Way
[Kotlin] 상속과 오버라이딩 (open, override) 본문
반응형
※ 해당 코틀린 포스트들은 기본적으로 자바를 알고 있다는 가정하에 간단히 예제만 제공하여 설명됩니다.
코틀린의 상속과 오버라이딩
코틀린의 클래스와 메서드는 기본적으로 final 입니다. 그렇기에 상속과 오버라이딩이 불가하므로 상속과 오버라이딩을 허용하기 위해서는 open을 사용해야 합니다.
open class Animal { // 상속 허용
open fun sound() { // 오버라이딩 허용
println("Some generic animal sound")
}
}
1. 상속
자바에서는 extends 키워드를 사용하여 상속을 하지만, 코틀린에서는 : 기호를 사용하여 부모 클래스를 상속 받습니다. 아래와 같이 Dog 클래스와 Cat 클래스의 뒤에 : Animal()을 붙여 Animal 클래스의 생성자를 호출하도록 하여 상속받는 구조 입니다.
Dog와 Cat은 상속을 받는 입장이므로 open이 필요하지 않습니다.
open class Animal {
open fun sound() {
println("Some generic animal sound")
}
}
class Dog : Animal() {}
class Cat : Animal() {}
2. 오버라이딩
자바의 경우 변수명, 매개변수 등을 똑같이 작성 후 @Override 어노테이션을 사용하였다면, 코틀린에서는 메서드 앞에 override만 붙여주면 됩니다. 자바는 어노테이션에 의존하여 개발자의 실수가 발생할 수 있지만, 코틀린의 경우 상속 후 같은 필드가 override를 사용하지 않는다면 컴파일 에러를 발생 시킵니다. 즉, 문법도 간단하며 개발자의 실수로 줄여줄 수 있습니다.
open class Animal {
open fun sound() {
println("Some generic animal sound")
}
}
class Dog : Animal() {
override fun sound() {
println("멍! 멍!")
}
}
class Cat : Animal() {
override fun sound() {
println("야옹~")
}
}
반응형
'Development > Kotlin' 카테고리의 다른 글
[Kotlin] 람다(Lambda)와 고차 함수(Higher-Order Function) 예시 (0) | 2025.08.22 |
---|---|
[Kotlin] 데이터 클래스, 오브젝트 클래스(data class, object class) (0) | 2025.08.22 |
[Kotlin] 클래스와 생성자(생성자 실행 순서, 주 생성자, 보조 생성자, init 블록) (0) | 2025.08.22 |
[Kotlin] 코틀린 기본 문법 (if, when, for, white, 함수 선언과 호출) (0) | 2025.08.22 |
[Kotlin] 코틀린 변수와 타입, Null 처리 연산자 정리 (0) | 2025.08.20 |