最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Kotlin中實(shí)體類(lèi)的創(chuàng)建方式

 更新時(shí)間:2020年03月16日 15:43:58   作者:東來(lái)東往ol  
這篇文章主要介紹了Kotlin中實(shí)體類(lèi)的創(chuàng)建方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

類(lèi)的基本格式

class 類(lèi)名{

}

屬性的基本格式

var 屬性名字 : 類(lèi)型

下面是實(shí)體類(lèi)代碼

package com.dldw.entity
import java.util.* 
class Demo {
 
 //var 聲明的屬性可以被二次賦值 val聲明的是不可變屬性,賦值以后不能在賦值,否則編譯報(bào)錯(cuò)
 
 //長(zhǎng)整型 64位 注意后面加大寫(xiě)L
 var height: Long? = 0L

 //整型 32 位
 var id : Int?= 0

 //短整型 16位
 var short :Short? =0

 // 8位
 var name : Byte? = null

 //浮點(diǎn)類(lèi)型 雙精度 64位
 var level: Double = 0.0

 //單精度 后面加f
 var levelf: Float = 0.0f

 //時(shí)間類(lèi)型成員屬性 ?表示該屬性可以為null
 var createTime: Date?=null

 //初始化,kotlin沒(méi)有new關(guān)鍵字,直接 對(duì)象()就是創(chuàng)建一個(gè)新對(duì)象
 var time: Date?=Date()

 //字符串類(lèi)型
 var introduction: String? = null

 //布爾類(lèi)型作為屬性
 var isHide: Boolean? = null

 //可變集合作為屬性
 var child: MutableList<Demo> ?= null

 // Char是一個(gè)單獨(dú)類(lèi)型 ,不表示數(shù)字,需要用‘'括起來(lái),不然那會(huì)報(bào)錯(cuò)
  var char : Char?= '1'
}

補(bǔ)充知識(shí):Kotlin中類(lèi)、構(gòu)造器、對(duì)象

1.Kotlin中類(lèi)的定義

類(lèi)的構(gòu)成:

類(lèi)的構(gòu)成由構(gòu)造函數(shù)和初始化代碼塊、屬性(字段)、函數(shù)(方法)、內(nèi)部類(lèi)(嵌套類(lèi))、對(duì)象聲明五部分組成

//Kotlin中也是使用class關(guān)鍵字創(chuàng)建類(lèi)的

class Empty

2.創(chuàng)建類(lèi)的對(duì)象

fun main(args: Array<String>) {
 val empty=Empty() //Kotlin中創(chuàng)建對(duì)象無(wú)new關(guān)鍵字
}

3.創(chuàng)建類(lèi)的構(gòu)造器

Kotlin當(dāng)沒(méi)有創(chuàng)建構(gòu)造器時(shí),與Java類(lèi)似的是,與Java類(lèi)似的就是當(dāng)沒(méi)有顯示提供主函數(shù)時(shí),Kotlin會(huì)為其生成一個(gè)無(wú)參構(gòu)造。

/**
 * 構(gòu)造器 constructor Kotlin中有一個(gè)主構(gòu)造函數(shù)和多個(gè)二級(jí)構(gòu)造函數(shù)
 * 主構(gòu)造函數(shù)是類(lèi)頭的一部分,跟在類(lèi)名后面
 * 在Java中,構(gòu)造方法必須和類(lèi)名相同,而在Kotlin中,是通過(guò)constructor關(guān)鍵字來(lái)標(biāo)明的
 */
class Student constructor(name: String, age: Int) {
 private val username: String
 private var age: Int
 
 //在Kotlin中使用init初始化代碼塊,它的作用是為了主構(gòu)造函數(shù)服務(wù)的,由于主構(gòu)造函數(shù)是放在類(lèi)首部的,是不能包含任何初始化執(zhí)行語(yǔ)句的,這是語(yǔ)法規(guī)定的,那么這個(gè)時(shí)候就有了init的用武之地,
 // 我們可以把初始化執(zhí)行語(yǔ)句放置在此處,為屬性進(jìn)行賦值
 init {
  this.username = name
  this.age = age
 }
}
 
//寫(xiě)法二 : 可將constructor關(guān)鍵字去掉
class Student2(username: String, age: Int) {
 private val username: String
 private val age: Int
 
 init {
  this.username = username
  this.age = age
 }
}
 
//寫(xiě)法三 初始化語(yǔ)句不是必須放在init代碼塊中的,也可以定義屬性的時(shí)候初始化
class Student3(username: String, age: Int) {
 private val username: String = username
 private var age: Int = age
}
//寫(xiě)法四,直接在構(gòu)造器中定義類(lèi)的屬性
class Student4(private val username: String,private val age: Int){}
 
//次構(gòu)造函數(shù),與主構(gòu)造函數(shù)的區(qū)別就是,次構(gòu)造函數(shù)定義在類(lèi)中,可以有多個(gè),但是主構(gòu)造函數(shù)只會(huì)有一個(gè)
class Users{
 private val username:String
 private val age:Int
 
 constructor(username: String,age: Int){
  this.username=username
  this.age=age
 }
}

4.創(chuàng)建抽象類(lèi)

用來(lái)創(chuàng)建基類(lèi),封裝常用的方法,以及處理一些共有的邏輯,而這個(gè)所謂的基類(lèi)一般都是抽象類(lèi)。

Kotlin中抽象類(lèi)的定義

抽象類(lèi),可以理解為類(lèi)定義了一個(gè)模板。所有的子類(lèi)都是根據(jù)這個(gè)模板是填充自己的代碼。

關(guān)鍵字:abstract

抽象可以分為:抽象類(lèi)、抽象函數(shù)、抽象屬性。而一個(gè)抽象類(lèi)和普通類(lèi)的區(qū)別在于抽象類(lèi)除了可以有其自己的屬性、構(gòu)造函數(shù)、方法等組成部分,還包含了抽象函數(shù)以及抽象屬性。

抽象類(lèi)的定義及具體的實(shí)現(xiàn)類(lèi)

class TestAbstractA :Lanauge(){
 override var name: String="Kotlin"
 override fun init() {
//  TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
  println("我是${name}")
 }
}
 
class TestAbstractB :Lanauge(){
 override var name: String
 get() = "Java"
 set(value) {}
 override fun init() {
  // TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
  println("我是${name}")
 }
}
 
fun main(args: Array<String>) {
 val ta=TestAbstractA()
 val tb=TestAbstractB()
 println(ta.name)
 println(tb.name)
   ta.init()
 tb.init()
}

抽象類(lèi)的特點(diǎn):

抽象類(lèi)本身具有普通類(lèi)特性,以及組成部分。不過(guò)值得注意的是,抽象類(lèi)不能直接被實(shí)例化

其抽象了類(lèi)的子類(lèi)必須全部重寫(xiě)帶abstract修飾的屬性和方法。

抽象成員只有定義,沒(méi)有實(shí)現(xiàn)。都有abstract修飾符修飾。

抽象類(lèi)是為其子類(lèi)定義了一個(gè)模板。不同是類(lèi)實(shí)現(xiàn)不同的功能

***抽象類(lèi)還可以繼承自一個(gè)繼承類(lèi)

//使用open,這個(gè)類(lèi)聲明有open屬性,可以被其他類(lèi)繼承
open class Base {
 open fun init() {}
}
 
//抽象類(lèi)還可以繼承自一個(gè)繼承類(lèi)
abstract class Lanauge2 : Base() {
 override fun init() {
  super.init()
 }
 abstract class Name() {} //抽象類(lèi)的嵌套
}

5.嵌套類(lèi)

/**
 * 嵌套類(lèi)
 */
class Other {
 val numOuther = 1
 
 class Nested{
  fun init(){
   println("執(zhí)行了init方法")
  }
 }
}
 
//嵌套類(lèi)的使用
 
 Other.Nested().init() //調(diào)用格式為:外部類(lèi).嵌套類(lèi)().嵌套類(lèi) 方法/屬性

6.嵌套內(nèi)部類(lèi)

//嵌套內(nèi)部類(lèi)
class Othert{
 val mumOther=1
 
 inner class InnerClass{
  val name="InnerClass"
  fun init(){
   println("我是內(nèi)部類(lèi)")
  }
 }
}
在主函數(shù)中調(diào)用
Othert().InnerClass().init() // 調(diào)用格式為:外部類(lèi)().內(nèi)部類(lèi)().內(nèi)部類(lèi)方法/屬性

7.匿名內(nèi)部類(lèi)的定義

fun main(args: Array<String>) {
 //測(cè)試內(nèi)部類(lèi)
 val inner=Inner()
 inner.setOnClickListener(object : OnClickListener{
  override fun onItemClick(str: String) {
   println(str)
  }
 })
 inner.testListener()
}
class Inner{
 //lateini(延遲加載) 只能修飾, 非kotlin基本類(lèi)型
 //因?yàn)镵otlin會(huì)使用null來(lái)對(duì)每一個(gè)用lateinit修飾的屬性做初始化,而基礎(chǔ)類(lèi)型是沒(méi)有null類(lèi)型,所以無(wú)法使用lateinit。
 lateinit private var listener:OnClickListener
 fun setOnClickListener(listener: OnClickListener){
  this.listener=listener
 }
 
 fun testListener(){
  listener.onItemClick("我是匿名內(nèi)部類(lèi)的測(cè)試方法")
 }
}
 
interface OnClickListener{
 fun onItemClick(str:String)
}

8.定義局部類(lèi)

class Local{ // 外部類(lèi)
 val numOther = 1
 
 fun partMethod(){
  var name : String = "partMethod"
 
  class Part{
   var numPart : Int = 2
 
   fun test(){
    name = "test"
    numPart = 5
    println("我是局部類(lèi)中的方法")
   }
  }
 
  val part = Part()
  println("name = $name \t numPart = " + part.numPart + "\t numOther = numOther")
  part.test()
  println("name = $name \t numPart = " + part.numPart + "\t numOther = numOther")
 }
}
 
fun main(args: Array<String>) {
 // 測(cè)試局部類(lèi)
 Local().partMethod()
}

以上這篇Kotlin中實(shí)體類(lèi)的創(chuàng)建方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

乐至县| 乐亭县| 仪陇县| 满洲里市| 海安县| 石渠县| 夹江县| 万州区| 通海县| 玉门市| 阿荣旗| 拉萨市| 浦北县| 左云县| 区。| 民乐县| 石河子市| 融水| 石柱| 钟山县| 石首市| 崇阳县| 兰溪市| 肥东县| 柘城县| 湾仔区| 宣化县| 海淀区| 大埔区| 奉节县| 淮阳县| 临江市| 台北县| 布尔津县| 马公市| 洛隆县| 衡山县| 金乡县| 金寨县| 北辰区| 阳朔县|