Kotlin的类(成员方法、成员变量)

拼搏现实的明天。 2022-05-28 06:43 387阅读 0赞

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

  1. package net.println.kotlin.chapters
  2. /** * @author:wangdong * @description: */
  3. /**定义一个女生类*/
  4. class girl(var character: String, var appearance: String, var age: Int){
  5. fun sing(songName: String){
  6. //具体实现
  7. println("正在唱歌:$songName")
  8. }
  9. fun dance(danceName: String){
  10. //具体实现
  11. println("正在跳舞:$danceName")
  12. }
  13. }
  14. fun main(args: Array<String>) {
  15. val linda = girl("温柔","漂亮",18)
  16. linda.sing("北京欢迎你")
  17. linda.dance("天鹅湖")
  18. }

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

  1. package net.println.kotlin.chapters;
  2. /** * @author:wangdong * @description: Java中的类与成员变量 */
  3. public class JavaPerson {
  4. private String name;
  5. private Integer age;
  6. //java中没有初始化就是null
  7. private String school;
  8. public Integer getAge() {
  9. return age;
  10. }
  11. public void setAge(Integer age) {
  12. this.age = age;
  13. }
  14. public String getName() {
  15. return name;
  16. }
  17. //如果只允许它的子类才能设置,需要将public改为protected
  18. protected void setName(String name) {
  19. this.name = name;
  20. }
  21. }

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

  1. package net.println.kotlin.chapters
  2. /** * @author:wangdong * @description:kotlin中的类和成员变量 */
  3. class Girl{
  4. var age = 18
  5. get() {
  6. println("我今年 $age 岁")
  7. return field
  8. }
  9. //加protected只允许子类设置
  10. protected set(value) {
  11. println("我今年 $value 岁")
  12. }
  13. }

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

  1. package net.println.kotlin.chapters
  2. /** * @author:wangdong * @description:kotlin中的类和成员变量 */
  3. /**类成员*/
  4. /** * 属性:或者说成员变量,类范围内的变量 * 方法:或者说成员函数,类范围内的函数 */
  5. /**函数和方法的区别*/
  6. /** * 函数强调功能本身,不考虑从属 * 方法的称呼通常是从类的本身角度出发的 */
  7. /**定义方法*/
  8. /** * class Hello{ * fun sayHello(name: String) = println("Hello,$name") * } */
  9. /**定义属性*/
  10. /** * 在构造方法参数中 var和val修饰的都是属性 * 类内部也可以定义属性 * * class Hello(val aField: Int,bField: Int){ * var anotherField: Float = 3f * } */
  11. /**属性访问控制*/
  12. /** * val a: Int = 0 * get() = field * 不能定义set,因为val是不可变的 * * var b: Float = of * set(value){ * field = value * } */
  13. /**属性的初始化步骤*/
  14. /** * 属性的初始化,尽量在构造方法中完成 * 无法在构造方法中进行初始化,尝试降级为局部变量 * var 用lateinit延迟初始化,val用lazy延迟 * 可空类型,不建议使用null */
  15. /** * class Hello */
  16. class X
  17. class Girl{
  18. var b = 0
  19. //延迟初始化lateinit,只能放在var中
  20. lateinit var c: String
  21. lateinit var d: X
  22. val e: X by lazy {
  23. println("init X")
  24. X()
  25. }
  26. var cc: String? = null
  27. }
  28. fun main(args: Array<String>) {
  29. println("开始")
  30. val a = Girl()
  31. println("初始化")
  32. println(a.b)
  33. println(a.e)
  34. //延迟初始化,用的时候没有初始化访问会报错
  35. //kotlin.UninitializedPropertyAccessException: lateinit property c has not been initialized
  36. //println(a.c)
  37. //初始化后就不会报错了
  38. a.d = X()
  39. println(a.d)
  40. //输出null
  41. println(a.cc)
  42. //用的时候编译器就不允许了,a.cc.xxx后面为灰色不能使用
  43. //println(a.cc.)
  44. }

发表评论

表情:
评论列表 (有 0 条评论,387人围观)

还没有评论,来说两句吧...

相关阅读

    相关 静态成员变量

    类的静态成员变量 coding时遇到一个需求,抽象出来大概意思就是:A类的一个静态成员变量,需要在B类里面赋值,然后在C类里面使用。知识点:类的静态成员变量需要在全局域进

    相关 Java ——成员变量

    在Java中对象的属性也称为成员变量。成员变量的类型可以设置为Java中合法数据类型,其实成员变量就是普通的变量,可以为它设置初始值,也可以不设置初始值。 /