Kotlin系列之类和属性

这一节我们学习Kotlin的类和属性。

学习过Java的小伙伴对面向对象应该不会陌生吧。虽然说Kotlin支持直接在文件中写函数,但是它同样支持面向对象,下面就来了解一下Kotlin的类和属性相关的知识。

Kotlin的类

Kotlin中类的声明也是使用class关键字,下面我们通过对你Java代码和Kotlin代码来学习。

Java代码

public class People {
    private final String name;

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

    public String getName() {
        return name;
    }
}

Kotlin代码

class People(val name: String)

你没有看错,就是这么简洁,对于我们常用的Java 的构造函数初始化成员变量,Kotlin直接省略了代码,默认支持。同时,Kotlin中默认的可见性是public,所以此处省略了。

Kotlin的属性

在Java中我们经常会声明一个类,表示一个实体,然后在其中声明私有属性和对应的getter和setter方法,就如下面一样。

Java代码

public class People {
    private String name;
    private String age;

    public String getName() {
        return name;
    }

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

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}

我们看看Kotlin中的写法

Kotlin代码

class People {
    var name: String? = null
    var age: String? = null
}

是不是很简洁,上面的代码有如下几点需要注意。

1 . var关键字表明这个变量是可变的,也就是可以反复赋值的。

2 . 声明格式是 关键字 变量名: 变量类型,这里还赋值为null

3 . ?表示这是一个可空的属性,也就是可以为null的属性。

我们发现上面的代码没有gettersetter方法,其实Kotlin默认为我们生成了,只是不需要显式写出来而已。

同时还有几点需要注意

1 . Kotlin为var变量默认生成gettersetter方法,功能与Java的gettersetter方法一致。

2 . Kotlin为val变量默认生成getter方法,由于val只能赋值一次,自然就没有setter方法啦。

Java和Kotlin的互操作

前面的内容我们说过Kotlin是一门专注于互操作性的语言,可以与Java无缝结合。那么我们如何在Java中使用Kotlin的类呢。

Kotlin代码

class People {
    var name: String? = null
    var age: String? = null
}

这是上面的代码块,下面我们先来看看在Kotlin中如何使用这个类。

fun main(args: Array<String>){
    val people = People();
    people.age = "12";
    people.name = "bingjianit";

    println(people.age + "  " + people.name);
}

输出结果

12  bingjianit

你会发现与Java有以下几点不同

1 . 不需要new一个对象

2 . 可以直接通过对象.属性来取值或者赋值

下面看看上面的代码在Java中如何调用

public class Main {
    public static void main(String[] args) {
        People people = new People();

        people.setName("bingjianit");
        people.setAge("12");

        System.out.println(people.getName() + "  " + people.getAge());
    }
}

你会发现虽然Kotlin代码中没有gettersetter方法,但是在Java代码中可以直接调用gettersetter代码。

注意: Kotlin默认我我们生成的getter和setter方法的规则与Java中自动生成getter和setter的规则相同,但是当一个变量以is开头时,它的getter方法就是变量本身,setter方法是去掉is加上set前缀
例子

Kotlin代码

class People {
    var name: String? = null
    var age: String? = null
    var isRunnable: Boolean? = null
}

Java代码

// 去掉is加上set前缀
people.setRunnable(true);
//getter方法是变量本身,没有前缀
System.out.println(people.isRunnable());

反过来,Kotlin操作Java的类实体,也是一样的。

Java代码

public class Animal {
    private String name;

    public String getName() {
        return name;
    }

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

Kotlin调用代码

fun main(args: Array<String>){
    val animal = Animal()
    animal.name = "兔子"
    println(animal.name)

}
写在最后

这一部分我们简单了解了Kotlin面向对象的类和属性相关知识,这是我们写出结构清楚的代码的基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值