Kotlin 입 갱 (4) 류 와 계승 1
13160 단어 Kotlin
class Person {
}
그러나 구조 함 수 는 자바 와 달리 constructor 키 워드 를 사용 합 니 다. constructor 앞 에 클래스 의 제어 도 메 인 을 추가 할 수 있 습 니 다. 예 를 들 어 private, Public 는 메 인 구조 함수 에 주석 이나 보이 지 않 는 수정자 가 없 으 면 이 constructor 키 워드 를 생략 할 수 있 습 니 다.
class Person constructor(name: String) {
}
class Person private constructor(name: String) {//添加可见性修饰符
}
class Person(name: String) {//省略constructor
}
우 리 는 일반적으로 구조 함수 에서 초기 에 뭔 가 를 바 꾸 지만, 주 구조 함수 에는 코드 가 포함 되 어 있 지 않 기 때문에 초기 화 작업 은 init 키워드 에 넣 습 니 다.
class Person(name: String) {
init {
//初始化的工作
}
}
주 구조 함수 의 매개 변 수 는 클래스 에서 직접 사용 할 수 있 습 니 다.
class Person(name: String) {
val customerKey = name.toUpperCase()
}
다 구조
//주 구조 함수 없 음
class Person{//多构造
constructor(name:String)
constructor(name: String,email: String)
constructor(name: String,email: String,address:String)
}
만약 클래스 에 메 인 구조 함수 가 있다 면, 모든 구조 함 수 는 메 인 구조 함수 에 this 키 워드 를 사용 하도록 위탁 해 야 합 니 다.
class Person(name:String){
constructor(name: String,email: String):this(name)
constructor(name: String,email: String,address:String):this(name)
}
메모: JVM 에서 주 구조 함수 의 모든 매개 변수 가 기본 값 이 있 으 면 컴 파일 러 는 추가 적 인 무 참 구조 함 수 를 생 성하 고 기본 값 을 사용 합 니 다.예 를 들 면:
class Person(val name: String = "")
위의 클래스 는 만 들 때 다음 과 같은 두 가지 kotlin 으로 실체 클래스 를 만 들 수 있 습 니 다. new 키 워드 를 필요 로 하지 않 습 니 다.
var person = Person()
var person1 = Person("张三")
이어받다
kotlin 에는 자바 의 extends 와 implements 키워드 가 없습니다. 인터페이스 사용 키 워드 를 계승 하고 실현 합 니 다: 콜론 해결
이 클래스 에 주 구조 함수 가 있다 면 기본 형식 은 (기본 형식의) 주 구조 함수 매개 변 수 를 사용 하여 현지에서 초기 화 할 수 있 습 니 다.
open class Person(name:String)
class Student(name:String) : Person(name)
클래스 의 open 레이 블 은 자바 의 final 과 반대로 다른 클래스 가 이 클래스 에서 계승 할 수 있 도록 합 니 다.기본적으로 Kotlin 의 모든 클래스 는 final 입 니 다.
주 구조 함수 가 없 으 면 모든 구조 함 수 는 슈퍼 키 워드 를 사용 하여 기본 형식 을 초기 화하 거나 다른 구조 함수 에 의뢰 해 야 합 니 다.이러한 상황 에서 서로 다른 구조 함 수 는 기본 유형의 서로 다른 구조 함 수 를 호출 할 수 있 습 니 다.
open class Person{
constructor(name:String)
constructor(name: String,age:Int)
}
class Student : Person{
constructor(name:String) : super(name)
constructor(name:String,age:Int):super(name,age)
}
덮어 쓰기 방법
부모 클래스 의 방법 이 하위 클래스 를 덮어 쓸 수 있다 면 open 키 워드 를 사용 해 야 합 니 다.
open class Person{
constructor(name:String)
constructor(name: String,age:Int)
open fun eat(){
}
}
하위 클래스 가 부모 클래스 를 덮어 쓰 려 면 override 키워드 로 설명 해 야 합 니 다.
class Student : Person{
constructor(name:String) : super(name)
constructor(name:String,age:Int):super(name,age)
override fun eat() {
super.eat()
}
}
오 버 라 이 드 로 표 시 된 멤버 자체 가 열 려 있 습 니 다. 즉, 하위 클래스 에 덮어 쓸 수 있 습 니 다.다시 덮어 쓰 기 를 금지 하려 면 final 키 워드 를 사용 하 십시오.
내부 클래스 에서 중국 측 이 외부 클래스 인 부 류 는 외부 클래스 이름 으로 제 한 된 슈퍼 키 워드 를 통 해 이 루어 질 수 있다.super@Outer외부 클래스
class Student : Person{
constructor(name:String) : super(name)
constructor(name:String,age:Int):super(name,age)
override fun eat() {
super.eat()
}
inner class mouth{
fun go(){
super@Student.eat()
}
}
}
만약 에 자 류 가 두 부류 의 부 류 를 물 려 받 았 다 면 두 부류 중 한 가지 방법의 이름 이 같다 면 자 류 가 이 방법 을 실현 할 때
super
가 어떤 부류 의 방법 인지 밝 혀 야 한다.base 대표 부류추상 류
자바 처럼 abstract 키워드 로 꾸 미 기
abstract class Person{
abstract fun eat()
}
정적 방법
kotlin 에는 static 키워드 가 없습니다.우 리 는 평소에 개발 할 때 자주 도구 류 를 사용 하고 유형 명 을 직접 호출 하 는 방법 을 사용한다.kotlin 에서 copanion object 를 감 싸 는 방법 은 다음 과 같 습 니 다.
class ImageLoader{
companion object{
//默认加载
fun loadImageView(mContext: Context, path: String, mImageView: ImageView) {
Glide.with(mContext).load(path).into(mImageView)
}
}
}
object 키워드 로 직접 설명 할 수도 있 습 니 다.
object ScreenUtil{
fun dip2px(context: Context, dpValue: Float): Int {
val scale = context.resources.displayMetrics.density
return (dpValue * scale + 0.5f).toInt()
}
}
호출 할 때 돼 요.
ImageLoader.loadImageView(context, url,imageview)
ScreenUtil.dip2px(this,12f)
속성 과 필드
Kotlin 의 클래스 는 속성 (구성원 변수 상수) 이 있 을 수 있 습 니 다.속성 은 키워드 var 로 가 변 적 이 고 키 워드 val 로 상수 로 설명 할 수 있 습 니 다.
class Man{
val type= "man"
var name:String = ""
var age: Int = 30
}
사용 하기 도 편 하고 요.
val man = Man()
var name = man.name
var age = man.age
const 는 컴 파일 시 상수 를 정의 할 수 있 지만, const 는 최상 위 속성 과 object 대상 의 속성 에 만 사용 할 수 있 습 니 다.
package com.chs.kotlintext
const val TEG = "man"
class Man{
object SmallMan{
const val TEG = "small_man"
}
val type = "man"
var name:String = ""
var age: Int = 30
}
지연 초기 화 속성 과 변 수 는 lateinit 키 워드 를 사용 합 니 다.
class Man{
lateinit var girl : Girl
}
이 수식 자 는 클래스 의 속성 (주 구조 함수 에서 설명 하 는 var 속성 이 아니 라 이 속성 이 getter 나 setter 를 사용자 정의 하지 않 았 을 때 만 사용 할 수 있 습 니 다) 에 만 사용 되 며, Kotlin 1.2 부터 최상 위 속성 과 부분 변수 에 도 사 용 됩 니 다.이 속성 이나 변 수 는 비 어 있 는 형식 이 어야 하 며, 원생 형식 이 될 수 없습니다.초기 화 전에 lateinit 속성 을 방문 하면 특정한 이상 을 던 집 니 다. 이 이상 은 이 속성 이 방문 되 었 고 초기 화 되 지 않 았 다 는 사실 을 명확 하 게 표시 합 니 다. 1.2 부터 lateinit var 가 초기 화 되 었 는 지 확인 할 수 있 습 니 다
.isInitialized
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
머티리얼 디자인 도입 직후에 할 일안드로이드 프로젝트에 머티리얼 디자인을 도입한 후에 할 일을 적는다. Android 프로젝트를 만든 후 Hello world에 대해 수행합니다. 머티리얼 디자인을 도입하기 위해, build.gradle 를 이하와 같...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.