Kotlin의 구성 방법 또는 속성의 클래스
주 구조 방법과 문장 블록 초기화
주 구조 방법을 성명하다
class User constructor(_nickname: String){
val nickname: String
init {
nickname = _nickname
}
}
위의 예에서 주 구조 방법에 제한이 있기 때문에 초기화 코드를 포함할 수 없기 때문에 초기화 문장 블록을 사용해야 한다.
이 예에서
constructor
키워드도 제거할 수 있다class User2 constructor(_nickname: String){
val nickname = _nickname
}
만약 속성이 상응하는 구조 방법의 매개 변수로 초기화된다면 코드는
val
키워드를 매개 변수 앞에 추가하는 방식으로 간소화하면 클래스의 속성 정의를 바꿀 수 있다class User(val nickname:String)
함수 매개 변수와 같이 구조 방법 매개 변수에 기본값을 설명할 수 있습니다
class User(val nickname: String,val isSubscribed: Boolean = true)
만약 하나의 클래스에 부류가 있다면, 주 구조 방법에서도 마찬가지로 부류를 초기화해야 한다
open class User(val nickname: String){...}
class TwitterUser(name:String) : User(name){...}
만약 부류가 어떤 구조 방법을 제공하지 않는다면, 부류의 구조 방법을 표시해서 부류에 아무런 인자가 없어도 사용해야 한다
open class Button
class RadioButton : Button()
클래스 외부의 코드를 실례화하지 말고 구조 방법을
private
로 표시할 수 있습니다class Secretive private constructor(){...}
다른 방식으로 부류를 초기화하다
부류의 여러 가지 구조 방법을 다시 쓸 필요가 있을 때, 여러 개의 종구조 방법을 성명해야 한다
class MyButton : View{
constructor(ctx:Context):this(ctx, null)
constructor(ctx: Context,attr: AttributeSet?):super(ctx,attr)
}
인터페이스에서 설명하는 속성을 실현하다
interface User {
val nickname: String
}
override
키워드를 더하면 이 속성은 부류User
에서 나온 추상적 속성 class PrivateUser(override val nickname: String) : User
nickname
속성은 사용자 정의getter
의 방식으로 실현 class SubscribingUser(val email: String) : User {
override val nickname: String
get() = email.substringBefore("@")
}
nickname
속성과 값을 연결하는 방식class FaceBookUser(val accountId:Int) : User {
override val nickname = getFacebookName(accountId)
}
추상적 속성 성명을 제외하고 인터페이스에는
getter
와 setter
의 속성이 포함될 수 있다interface User {
val email: String
val nickname: String
get() = email.substringBefore("@")
}
이 인터페이스는 추상적 속성
email
을 포함하고 nickname
속성은 사용자 정의getter
가 있습니다.첫 번째 속성은 하위 클래스에서 다시 써야 하고, 두 번째 속성은 계승될 수 있다.Getter 또는 setter를 통한 지원 필드 액세스
가변 속성을 설명하고, 매번
setter
방문할 때마다 추가 코드를 실행합니다class User(val name: String){
var address: String = "unspecified"
set(value) {
println("Address was changed for $name: $address -> $value")
field = value
}
}
val user = User("kangdongpu");
user.address = "HeBei,SJZ"
Address was changed for kangdongpu: unspecified -> HeBei,SJZ
setter
의 함수체에서 지원하는 필드의 값에 접근하기 위해 특수한 표지부호field
를 사용했다.getter
에서는 수치만 읽을 수 있습니다.setter
에서는 읽을 수도 있고 수정할 수도 있습니다.액세스 가시성 수정
클래스 외부에서 수정할 수 없도록
private setter
의 속성을 성명합니다class LengthCounter {
var counter:Int = 0
private set
fun addWord(word:String){
counter+=word.length
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.