类的基本格式
class 类名{
}
属性的基本格式
var 属性名字 : 类型
下面是实体类代码
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
package com.dldw.entity
import java.util.*
class Demo {
var height: Long? = 0L
var id : Int?= 0
var short :Short? = 0
var name : Byte? = null
var level: Double = 0.0
var levelf: Float = 0 .0f
var createTime: Date?= null
var time: Date?=Date()
var introduction: String? = null
var isHide: Boolean? = null
var child: MutableList<Demo> ?= null
var char : Char?= '1'
}
|
补充知识:Kotlin中类、构造器、对象
1.Kotlin中类的定义
类的构成:
类的构成由构造函数和初始化代码块、属性(字段)、函数(方法)、内部类(嵌套类)、对象声明五部分组成
//Kotlin中也是使用class关键字创建类的
class Empty
2.创建类的对象
?
1
2
3
|
fun main(args: Array<String>) {
val empty=Empty()
}
|
3.创建类的构造器
Kotlin当没有创建构造器时,与Java类似的是,与Java类似的就是当没有显示提供主函数时,Kotlin会为其生成一个无参构造。
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
/**
* 构造器 constructor Kotlin中有一个主构造函数和多个二级构造函数
* 主构造函数是类头的一部分,跟在类名后面
* 在Java中,构造方法必须和类名相同,而在Kotlin中,是通过constructor关键字来标明的
*/
class Student constructor(name: String, age: Int) {
private val username: String
private var age: Int
init {
this .username = name
this .age = age
}
}
class Student2(username: String, age: Int) {
private val username: String
private val age: Int
init {
this .username = username
this .age = age
}
}
class Student3(username: String, age: Int) {
private val username: String = username
private var age: Int = age
}
class Student4( private val username: String, private val age: Int){}
class Users{
private val username:String
private val age:Int
constructor(username: String,age: Int){
this .username=username
this .age=age
}
}
|
4.创建抽象类
用来创建基类,封装常用的方法,以及处理一些共有的逻辑,而这个所谓的基类一般都是抽象类。
Kotlin中抽象类的定义
抽象类,可以理解为类定义了一个模板。所有的子类都是根据这个模板是填充自己的代码。
关键字:abstract
抽象可以分为:抽象类、抽象函数、抽象属性。而一个抽象类和普通类的区别在于抽象类除了可以有其自己的属性、构造函数、方法等组成部分,还包含了抽象函数以及抽象属性。
抽象类的定义及具体的实现类
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
class TestAbstractA :Lanauge(){
override var name: String= "Kotlin"
override fun init() {
println( "我是${name}" )
}
}
class TestAbstractB :Lanauge(){
override var name: String
get() = "Java"
set(value) {}
override fun init() {
println( "我是${name}" )
}
}
fun main(args: Array<String>) {
val ta=TestAbstractA()
val tb=TestAbstractB()
println(ta.name)
println(tb.name)
ta.init()
tb.init()
}
|
抽象类的特点:
抽象类本身具有普通类特性,以及组成部分。不过值得注意的是,抽象类不能直接被实例化
其抽象了类的子类必须全部重写带abstract修饰的属性和方法。
抽象成员只有定义,没有实现。都有abstract修饰符修饰。
抽象类是为其子类定义了一个模板。不同是类实现不同的功能
***抽象类还可以继承自一个继承类
?
1
2
3
4
5
6
7
8
9
10
11
12
|
open class Base {
open fun init() {}
}
abstract class Lanauge2 : Base() {
override fun init() {
super .init()
}
abstract class Name() {}
}
|
5.嵌套类
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
/**
* 嵌套类
*/
class Other {
val numOuther = 1
class Nested{
fun init(){
println( "执行了init方法" )
}
}
}
Other.Nested().init()
|
6.嵌套内部类
?
1
2
3
4
5
6
7
8
9
10
11
12
|
class Othert{
val mumOther= 1
inner class InnerClass{
val name= "InnerClass"
fun init(){
println( "我是内部类" )
}
}
}
在主函数中调用<br>Othert().InnerClass().init()
|
7.匿名内部类的定义
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
fun main(args: Array<String>) {
val inner=Inner()
inner.setOnClickListener(object : OnClickListener{
override fun onItemClick(str: String) {
println(str)
}
})
inner.testListener()
}
class Inner{
lateinit private var listener:OnClickListener
fun setOnClickListener(listener: OnClickListener){
this .listener=listener
}
fun testListener(){
listener.onItemClick( "我是匿名内部类的测试方法" )
}
}
interface OnClickListener{
fun onItemClick(str:String)
}
|
8.定义局部类
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
class Local{
val numOther = 1
fun partMethod(){
var name : String = "partMethod"
class Part{
var numPart : Int = 2
fun test(){
name = "test"
numPart = 5
println( "我是局部类中的方法" )
}
}
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>) {
Local().partMethod()
}
|
|