Kotlin 대상 에 대한 자세 한 설명(1)

Kotlin 대상 지향
대상 을 향 하 다
대상 을 향 한 의 미 는 낯 설 지 않 을 것 이다.사물 을 대상 으로 추상 화하 여 프로그램의 개발 난이 도 를 크게 간소화 했다.우리 가 자주 사용 하 는 자바,Python,C++는 모두 대상 을 대상 으로 하 는 프로 그래 밍 언어 에 속한다.Kotlin 은 자바 와 비슷 하고 대상 을 대상 으로 하 는 언어 이기 도 합 니 다.Kotlin 에서 가장 중요 한 부분 으로서 우 리 는 Kotlin 의 OOP 를 통 해 이 언어 를 이해 할 수 있다.본 고 는 유형,속성,인터페이스,대상 등 여러 측면 에서 Kotlin 의 대상 을 대상 으로 하 는 특성 을 소개 할 것 이다.
종류
대부분의 언어 와 유사 합 니 다.Kotlin 은 클래스 의 키 워드 를 사용 합 니 다.클래스 를 설명 할 때 클래스 에 클래스 이름 을 추가 하 는 방식 으로 이 루어 져 야 합 니 다.

class ClassDemo{ 
 
} 
클래스 를 설명 할 때,최소한 클 라 스 키워드 와 뒤의 클래스 이름 을 포함해 야 하 며,필요 에 따라 클래스 헤드(일부 파 라 메 터 를 설명 하 는 데 사용)와 클래스(괄호{}에 포 함 된 내용 은 생략 할 수 있 습 니 다)를 추가 할 수도 있 습 니 다.
구조 함수
자바 와 달리 여러 개의 구조 함 수 를 포함 할 수 있 지만 자바 의 각 구조 함 수 는 모두 평 급 이 고 Kotlin 에 서 는 2 급(주 구조 함수 와 2 급 구조 함수)으로 나 뉘 어 있 습 니 다.주 구조 함 수 는 클래스 헤드 에 포함 되 어 있 기 때문에 init 방법 에서 추가 적 인 조작 이 필요 합 니 다.2 급 구조 함 수 는 함수 체 에서 모든 조작 을 실현 할 수 있 습 니 다.

//     ,constructor init     
class ClassDemo constructor(type:String){ 
 init{ 
 System.out.println(type) 
 } 
} 
주 구조 함수 에 들 어 오 는 매개 변 수 는 클래스 에서 속성 할당 을 할 수도 있 고 주 구조 함수 에서 직접 설명 할 수도 있 습 니 다.

class ClassDemo(type:String, var prop2: String = type){ 
 var prop1 = type 
} 
2 급 구조 함 수 는 constructor 를 포함해 야 합 니 다.

class ClassDemo{ 
 constructor(type:String){ 
  System.out.println(type) 
 } 
} 
주 구조 함수 가 있 는 클래스 에 있어 서 모든 2 급 구조 함 수 는 다른 2 급 구조 함수 대리 주 구조 함 수 를 직접 또는 간접 적 으로 통과 해 야 한다.같은 클래스 에서 다른 구조 함 수 를 대리 하여 this 키 워드 를 사용 합 니 다:

//               
class ClassDemo(type:String){ 
 constructor(type:String, param:String):this(type){ 
  System.out.println(type + param) 
 } 
} 
주 구조 함 수 를 설명 하 든 안 하 든 Kotlin 은 구조 함수 의 방법 을 제공 합 니 다.어떤 유형의 구조 함 수 를 노출 시 키 지 않 으 려 고 할 수도 있 습 니 다(예 를 들 어 단일 모드 를 실현 할 때).그러면 주 구조 함 수 를 처리 해 야 합 니 다.

class ClassDemo private constructor(){ 
 
} 
인 스 턴 스 를 만 들 려 면 해당 하 는 구조 함 수 를 직접 호출 하여 만 들 수 있 습 니 다.

var demo = ClassDemo("hello world") 
val demo = ClassDemo("hello","world") 
Kotlin 에 서 는 속성 을 설명 하 든 인 스 턴 스 를 만 드 든 두 가지 방식 이 있 습 니 다.var 와 val,val 은 자바 의 final 과 유사 합 니 다.이 를 통 해 설명 하 는 내용 은 변 할 수 없 으 며,var 와 val 은 반대로 성명 의 내용 은 읽 을 수도 있 고 수정 할 수도 있 습 니 다.
이어받다
Kotlin 에 서 는 모든 클래스 가 Any 라 는 부모 클래스 를 기본적으로 계승 하지만 Any 는 자바 의 Object 클래스 와 완전히 같 지 않 습 니 다.equals(),hashCode(),toString()세 가지 방법 만 있 기 때 문 입 니 다.부모 클래스 를 정의 하려 면 open 키 워드 를 사용 해 야 합 니 다.

open class Base{ 
 
} 
그리고 하위 클래스 에서 콜론":"을 사용 하여 계승 합 니 다.

class SubClass : Base(){ 
 
} 
부모 클래스 에 구조 함수 가 있다 면 하위 클래스 의 주 구조 함수 에서 계승 해 야 합 니 다.없 으 면 주 구조 함수 나 2 급 구조 함 수 를 선택 할 수 있 습 니 다.

//   
open class Base(type:String){ 
 
} 
 
//   
class SubClass(type:String) : Base(type){ 
 
} 

다시 쓴다
Kotlin 의 재 작성 과 자바 에서 도 다 릅 니 다.Kotlin 은 모든 조작 이 명확 하 다 고 주장 하기 때문에 재 작성 하고 자 하 는 방법 을 open 으로 설정 해 야 합 니 다.

open fun funDemo() {} 
그리고 override 표 시 를 통 해 재 작성 합 니 다.

override fun funDemo() { 
 super.funDemo() 
 } 
override 재 작성 함수 도 open 입 니 다.재 작성 되 지 않 기 를 원한 다 면 앞에서 final 탭 을 추가 할 수 있 습 니 다.

open class SubClass : Base{ 
 constructor(type:String) : super(type){ 
 
 } 
 
 final override fun funDemo() { 
 super.funDemo() 
 } 
} 
하나의 클래스 가 동시에 계승 되 고 여러 개의 인 터 페 이 스 를 실현 할 때 다시 쓰 는 방법 이 부모 클래스 와 인터페이스 에 정의 되 어 있 으 면 슈퍼<>방식 으로 계승 할 수 있 습 니 다.

//   
interface InterfaceDemo{ 
 fun funDemo(){} 
} 
 
//  Base    InterfaceDemo 
class SubClass : Base(),InterfaceDemo{ 
 final override fun funDemo() { 
 super<Base>.funDemo() 
 super<InterfaceDemo>.funDemo() 
 } 
} 

밀봉 류
밀봉 류 는 엄격 한 유형 구 조 를 대표 하 는 데 사용 되 고 값 은 유한 집합 중의 특정한 유형 일 뿐 다른 유형 이 될 수 없다.이것 은 매 거 진 클래스 의 확장 에 해당 합 니 다.매 거 진 값 집합 유형 은 엄격하게 제한 되 어 있 지만 매 거 진 상수 마다 하나의 인 스 턴 스 만 있 고 밀봉 류 의 하위 클래스 는 서로 다른 상 태 를 포함 하 는 여러 개의 인 스 턴 스 를 가 질 수 있 습 니 다.설명 밀봉 류 는 class 앞 에 sealed 장식 자 를 추가 해 야 합 니 다.밀봉 류 는 하위 클래스 가 있 을 수 있 지만 모두 밀봉 류 성명 내부 에 끼 워 넣 어야 합 니 다.

//    
sealed class Expr { 
 class Const(val number: Double) : Expr() 
 class Sum(val e1: Expr, val e2: Expr) : Expr() 
 object NotANumber : Expr() 
} 
Kotlin 의 클래스 와 관련 된 용법 은 여기까지 소개 합 니 다.글 의 전체 코드 는github참조 이 고Kotlin 의 대상 지향(2)에서 속성,인터페이스 등 대상 을 대상 으로 하 는 과정 에서 똑 같이 흔히 볼 수 있 는 내용 을 소개 합 니 다.
글 코드 다운로드:http://xiazai.jb51.net/201706/yuanma/helloKotlin-master(jb51.net).rar
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기