博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kotlin的类(成员方法、成员变量)
阅读量:6619 次
发布时间:2019-06-25

本文共 2617 字,大约阅读时间需要 8 分钟。

一、首先看一个简单类和方法的实现

package net.println.kotlin.chapters/** * @author:wangdong * @description: *//**定义一个女生类*/class girl(var character: String, var appearance: String, var age: Int){
fun sing(songName: String){ //具体实现 println("正在唱歌:$songName") } fun dance(danceName: String){ //具体实现 println("正在跳舞:$danceName") }}fun main(args: Array
) { val linda = girl("温柔","漂亮",18) linda.sing("北京欢迎你") linda.dance("天鹅湖")}

二、类和成员变量、成员方法

先看一下Java中的类和成员变量、方法

package net.println.kotlin.chapters;/** * @author:wangdong * @description: Java中的类与成员变量 */public class JavaPerson {
private String name; private Integer age; //java中没有初始化就是null private String school; public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getName() { return name; } //如果只允许它的子类才能设置,需要将public改为protected protected void setName(String name) { this.name = name; }}

再看一下Kotlin中的类和成员变量

package net.println.kotlin.chapters/** * @author:wangdong * @description:kotlin中的类和成员变量 */class Girl{
var age = 18 get() { println("我今年 $age 岁") return field } //加protected只允许子类设置 protected set(value) { println("我今年 $value 岁") }}

三、kontlin的类相关成员变量、方法的实例

package net.println.kotlin.chapters/** * @author:wangdong * @description:kotlin中的类和成员变量 *//**类成员*//** * 属性:或者说成员变量,类范围内的变量 * 方法:或者说成员函数,类范围内的函数 *//**函数和方法的区别*//** * 函数强调功能本身,不考虑从属 * 方法的称呼通常是从类的本身角度出发的 *//**定义方法*//** * class Hello{ *   fun sayHello(name: String) = println("Hello,$name") * } *//**定义属性*//** * 在构造方法参数中 var和val修饰的都是属性 * 类内部也可以定义属性 * * class Hello(val aField: Int,bField: Int){ *       var anotherField: Float = 3f * } *//**属性访问控制*//** * val a: Int = 0 * get() = field * 不能定义set,因为val是不可变的 * * var b: Float = of * set(value){ *   field = value * } *//**属性的初始化步骤*//** * 属性的初始化,尽量在构造方法中完成 * 无法在构造方法中进行初始化,尝试降级为局部变量 * var 用lateinit延迟初始化,val用lazy延迟 * 可空类型,不建议使用null *//** * class Hello */class Xclass Girl{
var b = 0 //延迟初始化lateinit,只能放在var中 lateinit var c: String lateinit var d: X val e: X by lazy { println("init X") X() } var cc: String? = null}fun main(args: Array
) { println("开始") val a = Girl() println("初始化") println(a.b) println(a.e) //延迟初始化,用的时候没有初始化访问会报错 //kotlin.UninitializedPropertyAccessException: lateinit property c has not been initialized //println(a.c) //初始化后就不会报错了 a.d = X() println(a.d) //输出null println(a.cc) //用的时候编译器就不允许了,a.cc.xxx后面为灰色不能使用 //println(a.cc.)}

转载地址:http://jhupo.baihongyu.com/

你可能感兴趣的文章
[ACM_数学] Taxi Fare [新旧出租车费差 水 分段函数]
查看>>
二叉排序树的删除操作
查看>>
[JMX一步步来] 8、编写程序来连接MBean
查看>>
算法导论第六章优先队列(二)
查看>>
[LeetCode] Largest Number
查看>>
C#WeakReference弱引用
查看>>
JS~对img标签进行优化,使用onerror进行默认图像显示
查看>>
Mongodb~Linux环境下的部署~服务的部署与自动化
查看>>
【单页应用之通信机制】view之间应该如何通信
查看>>
linux多个分区合并为一个分区
查看>>
图片上传的第二种形式
查看>>
腾讯云服务器 离线安装最新稳定版MariaDB 10.2.6
查看>>
SQL 追踪
查看>>
【转】.so兼容32位和64位
查看>>
[唐诗]别薛华-王勃
查看>>
Java使用增强for循环和迭代器遍历Map集合
查看>>
Jmeter组件执行顺序与作用域
查看>>
基于Redis 千万级用户排行榜最佳实践
查看>>
MVC layout 命名空间引用问题
查看>>
23.4. 服务监控
查看>>