728x90
상속
- 클래스를 선언할 때 다른 클래스를 참조해서 선언하는 것
- 다른 클래스에서 상속할 수 있게 선언하려면 open 키워드를 사용한다.
- 하위 클래스에서 상속을 받으려면 클래스명 옆에 콜론(:)을 넣고 오른쪽에 상위 클래스명을 입력한다.
open class Parent{ // 하위클래스에서 상속받을 수 있도록 open 키워드 사용
// 상위 클래스
}
class Child: Parent(){ // 상위클래스 Parent를 상속
// 하위 클래스
}
- 매개변수가 있는 상위클래스를 상속받는 경우 하위클래스에서도 매개변수 형태에 맞게 전달해야한다
open class Parent(name: String){
}
class Child_First(name: String): Parent(name){
// 하위클래스를 선언하며 상위클래스 생성자 호출
}
class Child2_Second: Parent{
// 하위클래스에 보조 생성자를 통해 상위클래스 생성자 호출
constructor(name: String): super(name){
}
}
overriding(오버라이딩), 재정의
- 상위클래스에 선언된 변수나 함수를 같은 이름으로 하위클래스에서 다시 선언
- 변수, 함수 모두 override 키워드를 사용해 재정의가 가능하다
- 상위 클래스의 함수가 수행하는 로직을 그대로 이용하거나 추가적인 로직이 필요한 경우 사용
- 오버라이딩을 허용할 함수나 변수 앞에 open 키워드를 넣어야 하위클래스에서 재정의가 가능하다
open class Parent{
// open 키워드로 하위클래스에서 오버라이딩이 가능한 상태로 만듦
open var data = 10
open fun parentCall(){
println("parentCall : $data")
}
}
class Child: Parent(){
// override 키워드로 Parent 클래스의 변수와 함수를 재정의
override var data = 50
override fun parentCall() {
println("parentCall override in Child class : $data")
}
}
fun main(){
val obj = Child()
obj.parentCall() //parentCall override in Child class : 50
}
Kotlin 접근 제한자
public
- 접근 제한이 없어 원하는 곳 어디서든 접근할 수 있다. 접근제한자를 생략할 경우 C#과 다르게 기본값은 public이다.
internal
- Grable, Maven 등 같은 빌드나 프로젝트 단위와 같이 같은 모듈 내에서 접근이 가능하다.
protected
- 클래스의 멤버에서만 선언할 수 있기 때문에 최상위의 변수, 함수에서는 해당 키워드를 사용할 수 없다,
- protected 클래스의 멤버는 하위클래스에서도 접근할 수 있다.
private
- 해당 클래스 안에서만 접근할 수 있고, 최상위에서 선언하면 해당 파일 내부에서만 접근할 수 있다.
728x90
'Android' 카테고리의 다른 글
[Android Studio] 소문자 / 대문자 구분없이 자동완성 탭 열게하기 (0) | 2024.08.02 |
---|---|
[Kotlin] 코틀린 - 클래스 종류 (0) | 2024.08.02 |
[Kotlin] 코틀린 - 클래스, 생성자 (0) | 2024.08.01 |
[Kotlin] 코틀린 - 반복문 (0) | 2024.08.01 |
[Kotlin] 코틀린 - 조건문 (0) | 2024.08.01 |