Kotlin基础之类和属性

1.类

首先,来看一个简单的JavaBean类Person

package com.zhoujian.kotlindemo;

public class Person {
    private String name;

    public Person(String name){
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

转换成Kotlin代码

package com.zhoujian.kotlindemo

class Person(val name: String)

注意:从java转到Kotlin的过程中public消失了,在kotlin中public是默认可见性,所以可以省略

2.属性

在Kotlin中,属性是头等语言特性,完全取代了字段和访问器方法,在类中声明一个属性和声明一个变量一样,使用val(不可变)

和var(可变的)

class Person(
   val name:String,
   var isMarried:Boolean
)

val 不可变:生成一个字段和一个getter

var可变:生成一个字段和一个getter、一个setter

在java中使用Person

 Person person = new Person("jack",true);
 person.getName();

在kotlin中使用Person

扫描二维码关注公众号,回复: 9327094 查看本文章
  val person = Person("jack",true);
  person.name

3.自定义访问器

package com.zhoujian.kotlindemo

class Rectangle(val height: Int, val width: Int) {
    val isSquare: Boolean
        get() {
            return height == width
        }
}
 val rectangle = Rectangle(17,30)
 rectangle.isSquare // false

4.Kotlin 源码布局:目录和包

每一个Kotlin文件都能以一条package语句开头,使用关键字import导入

package com.zhoujian.kotlindemo.shaps

import java.util.*

class Rectangle(val height: Int, val width: Int) {
    val isSquare: Boolean
        get() {
            return height == width
        }

    fun createRandomRectangle():Rectangle{
        val random = Random()
        return Rectangle(random.nextInt(),random.nextInt())
    }

}
package com.zhoujian.kotlindemo.activity

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import com.zhoujian.kotlindemo.R
import com.zhoujian.kotlindemo.shaps.Rectangle

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val rectangle = Rectangle(1, 2)

        println(rectangle.createRandomRectangle().isSquare)

    }
}
发布了272 篇原创文章 · 获赞 68 · 访问量 40万+

猜你喜欢

转载自blog.csdn.net/u014005316/article/details/90049274