当前位置: 首页 > news >正文

【Kotlin】匿名类和伴生类

1 匿名类

        1)无继承

fun main() {var obj = object {var name: String = "zhang"override fun toString(): String {return name}}println(obj) // zhang
}

         2)有继承

fun main() {var obj = object: People {var name: String = "zhang"override fun play() {println("play, $name")}}obj.play() // play, zhang
}interface People {fun play()
}

2 单例

2.1 案例一

        1)object 单例

fun main() {var singleton = Singletonprintln(singleton)
}object Singleton {var name = "zhang"override fun toString(): String {return return name}
}

        2)对应的 java 类

        Singleton.java

public final class Singleton {private static String name;public static final Singleton INSTANCE;static {INSTANCE = new Singleton();name = "zhang";}private Singleton() {}public final String getName() {return name;}public final void setName(String var1) {name = var1;}public String toString() {return name;}
}

        java 中调用如下。

Singleton singleton = Singleton.INSTANCE;
System.out.println(singleton);

2.2 案例二

        1)object 单例

fun main() {var stu = Student.Tools.create("zhang")println(stu) // zhangprintln(Student.Tools.age) // 15
}class Student(var name: String) {object Tools {var age: Int = 15fun create(name: String): Student {return Student(name)}}override fun toString(): String {return name}
}

        2)对应的 java 类

        Student.java

public final class Student {private String name;public Student(String name) {this.name = name;}public final String getName() {return this.name;}public final void setName(String var1) {this.name = var1;}public String toString() {return this.name;}public static final class Tools {private static int age;public static final Tools INSTANCE;static {INSTANCE = new Tools();age = 15;}private Tools() {}public final Student create(String name) {return new Student(name);}public final int getAge() {return age;}public final void setAge(int var1) {age = var1;}}
}

        java 中调用如下。

Student stu = Student.Tools.INSTANCE.create("zhang");
System.out.println(stu);
System.out.println(Student.Tools.INSTANCE.getAge());

3 伴生类

        1)companion object

fun main() {var stu = Student.create("zhang")println(stu) // zhangprintln(Student.age) // 15
}class Student(var name: String) {companion object Tools {var age: Int = 15fun create(name: String): Student {return Student(name)}}override fun toString(): String {return name}
}

        2)对应的 java 类

        Student.java

public final class Student {private String name;private static int age = 15;public static final Tools Tools = new Tools(();public Student(String name) {this.name = name;}public final String getName() {return this.name;}public final void setName(String var1) {this.name = var1;}public String toString() {return this.name;}public static final class Tools {private Tools() {}public final Student create(String name) {return new Student(name);}public final int getAge() {return Student.age;}public final void setAge(int var1) {Student.age = var1;}}
}

         java 中调用如下。

Student stu = Student.Tools.create("zhang");
System.out.println(stu);
System.out.println(Student.Tools.getAge());
http://www.lryc.cn/news/331621.html

相关文章:

  • 【机器学习算法介绍】(3)决策树
  • 算法之查找
  • LInux脚本学习
  • JavaWeb基础(计网 socket 数据库 JDBC lombok Mybatis JUnit Maven)
  • 【HBase】
  • Vue3:使用Pinia存储、读取、修改数据
  • 基于 Quartz.NET 可视化任务调度平台 QuartzUI
  • 前端三剑客 —— CSS (第三节)
  • C# 系统学习(异步编程)
  • 前端工程师————CSS学习
  • C# 登录界面代码
  • 点云的Python均值采样
  • xss-labs 11-13通关记录
  • Unity类银河恶魔城学习记录12-2 p124 Character Stats UI源代码
  • 技术揭秘:如何打造完美互动的充电桩硬件与服务平台?
  • 【Django学习笔记(四)】JavaScript 语言介绍
  • IO和NIO的主要区别在哪里?
  • 爬虫部署平台crawlab使用说明
  • uniapp uni.scss中使用@mixin混入,在文件引入@include 样式不生效 Error: Undefined mixin.(踩坑记录一)
  • Redis的5大常见数据类型的用法
  • 刘小光本就疑心赵本山与他媳妇李琳有染,赵本山为证实清白便想起蛋糕上的字,结果呢?
  • Unity之PUN实现多人联机射击游戏的优化(Section 2)
  • 多叉树题目:N 叉树的层序遍历
  • 时序数据库IoTDB:功能详解与行业应用
  • 信息系统项目管理师——第18章项目绩效域管理(一)
  • WebSocket用户验证
  • NOSQL(非关系型数据库)的优缺点有哪些?
  • 个人推荐Redis比较好的一种使用规范
  • 【教程】宝塔default.db占用空间几十g解决方法|宝塔占用磁盘空间特别大解决方法|宝塔磁盘被占满怎么清理
  • Unity类银河恶魔城学习记录11-15 p117 Ice and Fire item Effect源代码