Kotlin与java语法对比笔记(二)

本文内容是我在学习kotlin语法的过程中学习和总结的一点小知识,很入门,初级水平,大佬请忽略。

如有错误敬请指正,不胜感激。

Kotlin与java语法对比笔记(一):https://blog.csdn.net/LPL0129/article/details/86646378

10、定义类

  • Kotlin中的类是使用class关键字来声明:
  • Kotlin中的类可以有一个主构造函数和一个或多个辅助构造函数。 主构造函数是类头的一部分:它在类名后面(和可选的类型参数)。 class Person constructor(firstName: String) { }
  • 如果主构造函数没有任何注释或可见性修饰符,那么可以省略constructor关键字:class Person(firstName: String) {}
  • 主构造函数不能包含任何代码。 初始化代码可以放在初始化程序块中,前缀为init关键字: class Customer(name: String) {init { logger.info("Customer initialized with value ${name}") } }
  • 请注意,初始化程序块中可以使用主构造函数的参数。 它们也可以用在类体中声明属性的初始化器:class Customer(name: String) {val customerKey = name.toUpperCase()}
  • 实际上,要声明属性并从主构造函数初始化它们,Kotlin有一个简洁的语法:class Person(val firstName: String, val lastName: String, var age: Int) {// ... }
  • 与常规属性大体相同,主构造函数中声明的属性可以是多值(var)或只读(val)。
  • 如果构造函数具有注释或可见性修饰符,则constructor关键字是必需的,修饰符将在它之前:class Customer public @Inject constructor(name: String) { ... }

11、接口

  • Kotlinde的接口和java8中的接口相似:它们可以包含抽象方法的定义以及非抽象方法的实现,但它们不能包含任何状态。使用interface关键字而不是class来声明一个Kotlin接口。        
     //声明一个接口
        interface IView {
            /**
             * 显示加载
             */
            fun showLoading() {
    
            }
        }

                          

interface View : IView {
        /**
         * 显示加载
         */
        override fun showLoading() {
            println("我实现了接口")
        }
    }
  •                 如上,定义一个接口,并实现接口中的方法。Kotlin中使用:(冒号)代替Java中的extends和implements关键之,和Java一样,一个类可以实现多个接口,但只能集成一个类。
  • 与Java中的@override注解类似,override修饰符用来标注被重写的父类或者接口的方法和属性。与java不同的是,在Kotlin中使用override修饰符是强制要求的。
  • 接口的方法可以有一个默认实现,与Java8不同的是,Java8中要求你在这样的实现上标注default关键字,但在kotlin中没有这样的要求,只需要你提供一个方法体。
     //声明一个接口
        interface IView {
            /**
             * 显示加载
             */
             fun showLoading() = println("接口的默认实现")
    
        }

12、访问性修饰符

  • final  不能别重写,类中成员的默认使用

  • open 可以被重写,需要明确的表明

  • abstract 必须被重写,只能在抽象类中使用;抽象成员不能有实现。

  • override 重写父类或接口中的成员,如果没有使用final表明,重写的成员是开放的

13、内部类和嵌套类

  • 像Java一样,在Kotlin中可以在一个类中声明另一个类。
  • 区别是Kotlin的嵌套类不能访问外部类的实例,除非你特别的做出了要求。
  • Kotlin中没有显示修饰符的嵌套类与Java中的static嵌套类是一样的,要是把它变成一个内部类来持有一个外部类的引用的话需要使用inner修饰符。
嵌套类和内部类在Java与Kotlin中的对应关系

类A在另一个类B中的声明

在Java中              在Kotlin中              
嵌套类(不存储外部类的引用) static class A class A
内部类(存储外部类的应用) class A inner class A

猜你喜欢

转载自blog.csdn.net/LPL0129/article/details/86653940