반응형
클래스 선언
//1. 클래스 선언 : 생성자 사용하여 초기값 받기
class Person {
//생성자
constructor(name: String){
println("이름: " + name)
}
}
val person = Person()
//2. 클래스 선언 : 프로퍼티 사용하여 초기값 받기
class Person(name: String, age: Int) {
//초기화
init {
println("이름: ${name}, 나이: ${age}")
}
}
접근 제한자
- public : 전체 공개(기본값)
- private : 현재 파일 내부에서만 사용가능
- internal : 같은 모듈 내에서만 사용가능
- protected : 상속받은 클래스에서 사용가능
class MyClass {
val a=1 //public
private val b=2
protected val c=3
internal val d=4
}
상속(open)
- 사용하지 않을때 : this type is final, so it cannot be inherited from 문구 나옴
//open키워드를 사용하여 상속가능하게 선언
open class Parent(val name: String) {
//생성자
constructor(name: String){
println("이름: " + name)
}
}
//부모의 기본 생성자의 인자를 동일하게 사용해서 바로 초기화가 될 수 있게 선언해야 함
class Child(name: String) : Parent(name) {
}
내부클래스
//내부 클래스 : inner사용, 외부 클래스 참조가능
class MyClass {
var num = 10
inner class InClass {
fun func(){
num = 20
}
}
}
//사용
MyClass().InClass().func()
추상클래스(abstract)
//추상 클래스
abstract class AbClass {
abstract fun abFunc()//추상메서드
fun func2(){
}
}
//추상 클래스를 상속시 미구현 메서드를 구현해야함
class MyClass : AbClass(){
override fun abFunc() {//추상메서드 구현
println("구현한 추상메서드")
}
}
데이터(data) 클래스
- 기본 생성자에는 최소 하나의 파라미터가 있어야 한다.
- 데이터 클래스는 abstract, open, sealed, inner가 되면 안 된다.
data class Student(var school: String, var age: Int, var name: String)
반응형
'안드로이드(Kotlin)' 카테고리의 다른 글
Android(Kotlin) null(?), lateinit, lazy (0) | 2021.11.20 |
---|---|
Android(Kotlin) 인터페이스(interface) (0) | 2021.11.20 |
Android(Kotlin) String(문자열) 다루기 (0) | 2021.11.20 |
Android(Kotlin) 함수(Function), 제어문 (0) | 2021.11.20 |
Android(Kotlin) 자료형, 변수와 상수, 타입 캐스팅 (0) | 2021.11.20 |
최근댓글