Kotlin 从零单排之小 tips

Posted 月盡天明

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin 从零单排之小 tips相关的知识,希望对你有一定的参考价值。

文章目录

object

object xxx 
	fun test() 
		// todo
	

这种类型的 kotlin 类是一种单例模式,在转成 java 字节码的时候,会变成如下:

public final class xxx 
	public static final xxx INSTANCE;
	
	private xxx() 
	
	
	public final void test() 
		// todo
	

所以这是一种”恶汉“类型的单例模式。


abstract

Kotlin 支持抽象属性和非抽象函数。但是抽象属性被子类继承时,必须赋值。

abstract class A 
    abstract val name: String
    abstract var age: Int

    fun getInfo(): String 
        return "name: $name -- age$age"
    


// 方式一
class B : A() 
    override val name: String
        get() = "coding"
    override var age: Int
        get() = 18
        set(value) 


// 方式二
class C(override val name: String, override var age: Int) : A() 



Decompile Kotlin bytecode 出来的代码如下:

public abstract class A 
   @NotNull
   public abstract String getName(); // val声明的变量只有get函数。不能被 set 赋值

   public abstract int getAge();

   public abstract void setAge(int var1);

   @NotNull
   public final String getInfo()  // 非抽象函数被定义成了 final
      return "name: " + this.getName() + " -- age" + this.getAge();
   


public final class B extends A 
   @NotNull
   public String getName() 
      return "coding";
   

   public int getAge() 
      return 18;
   

   public void setAge(int value) 
   


public final class C extends A 
   @NotNull
   private final String name; // 声明私有 “父类的抽象属性” 
   private int age; // 声明私有 “父类的抽象属性” 

   @NotNull
   public String getName()  // name 依然只有 get 函数
      return this.name;
   

   public int getAge() 
      return this.age;
   

   public void setAge(int var1) 
      this.age = var1;
   

   public C(@NotNull String name, int age)  // 构造函数中对两个 “抽象属性” 进行赋值。没有默认构造,所以只能通过这个来进行赋值。
      Intrinsics.checkParameterIsNotNull(name, "name");
      super();
      this.name = name;
      this.age = age;
   


internal

internal 用来修改一个类或者一个函数、变量。用 internal 来修饰之后,这个类、函数或者变量只能在当前的 model 中使用。不能跨 model 来进行调用。

以上是关于Kotlin 从零单排之小 tips的主要内容,如果未能解决你的问题,请参考以下文章

Android从零单排系列二《Android开发介绍》

c语言从零单排

从零单排Python学习第二课

从零开始单排学设计模式「策略模式」黑铁 II

python3 从零单排3_函数(购买商品小程序)

Python3 从零单排2_文件读写