目录:
class 类名{
类体的内容
}
//空类
class Empty
//在类中定义成员函数
class a{
fun b(){
println("成员函数");
}
}
class f{
var a:Int=1
val b:Int=2
}
//kotlin中没有new关键字
val c = f()
//使用 . 号来引用属性
c.a
class f constructor(a: Int) {}
var allByDefault: Int? // 错误: 需要一个初始化语句, 默认实现了 getter 和 setter 方法
var initialized = 1 // 类型为 Int, 默认实现了 getter 和 setter
val simple: Int? // 类型为 Int ,默认实现 getter ,但必须在构造函数中初始化
val inferredType = 1 // 类型为 Int 类型,默认实现 getter
//使用 lateinit 关键字来描述属性
public class MyTest {
lateinit var subject: TestSubject
@SetUp fun setup() {
subject = TestSubject()
}
@Test fun test() {
subject.method() // dereference directly
}
}
例子:
class F{
var a: String = ""
get() = field //将变量赋值后转换为大写
set(value) {
field = value.toUpperCase()
}
var b:Int=2
get()=field
set
}
fun main(args: Array<String>) {
var f:F = F()
f.a = "abc"
println(f.a)
println(f.b)
}
结果:
ABC
2
class F constructor(a: Int) {
init {
println(a)
}
fun B() {
println("类的函数")
}
}
fun main(args: Array<String>) {
val f=F(2)
f.B()
}
结果:
2
类的函数
//使用 this 关键字代理另一个构造函数
class A(val name: String) {
constructor (name: String, age:Int) : this(name) {
}
}
//声明一个空的主构造函数
class B private constructor () {
}
例子:
class F constructor(a: Int) {
init {
println(a)
}
// 次构造函数
constructor (a: Int, b: Int) : this(a) {
println(a+b)
}
fun B() {
println("类的函数")
}
}
fun main(args: Array<String>) {
val f=F(2,3)
f.B()
}
结果:
2
5
类的函数
open class Base {
open fun f() {}
}
abstract class Derived : Base() {
override abstract fun f()
}