Kotlin基础学习(三)——关于 类、抽象类、接口 的简介

一、类

1、声明类

Java声明构造类Person:

//java
public class Person{
    private final String name;
    public Person(String name){
        this.name = name;
    }
    public String getName(){
        return name;
    }
}

与Java不同,Kotlin声明构造类Person:

//kotlin
class Person(val name: String)  

类似于上述Kotlin代码中这种只有数据(如 name)没有其他代码的类,通常被叫做值对象。在 Kotlin 中 public 是默认的可见性,所以可以省略它。

Kotlin 声明无结构体的类

//Kotlin
class Test  //当类没有结构体时,花括号可省略
2、类的实例化

Kotlin没有使用new关键字,而是直接调用类的构造函数:

val person = Person("zhangsan")

二、抽象类

在Java中抽象类和抽象方法必须要有 “abstract” 关键字修饰,且抽象类中不一定只有抽象方法,抽象方法的目的是为了限定子类必须完成父类的某些动作。抽象类不能被实例化。

//java
public abstract class Test{}

在Kotlin中,关于抽象类同Java一样,使用 abstract 来修饰抽象成员始终是open,不需要显式地使用 open 修饰符。抽象类中的非抽象成员不是默认open,需要标注为open才可被重写。

//kotlin
abstract class Test{  //抽象类
    abstract fun fun22()  //抽象方法,必须被子类重写
    open fun fun33(){}  //可被子类重写
    fun fun44(){}  //不可被子类重写 final类型
}

class Test2: Test() {
    override fun fun22() {
        println("Test2::fun22")
    }
    override fun fun33() {
        super.fun33()
        println("Test2::fun33")
    }
}

三、接口

Kotlin与Java一样,定义接口使用的关键字是 interface,定义方式与类基本相同

//Java
[public] interface interface_name [extends interface1_name[, interface2_name,]] {
    // 接口体,其中可以包含定义常量和声明方法
    [public] [static] [final] type constant_name = value;    // 定义常量
    [public] [abstract] returnType method_name(parameter_list);    // 声明方法
}

Java8中,接口中可包含默认方法,接口的实现类可重写也可不重写接口中的默认方法:

default void methodDefault() {
    System.out.println("这是接口中定义的默认方法...");
}

Kotlin的接口中的方法也可以有一个默认实现,与Java8不同的是,Java8中需要你在这样的实现上标注 default关键字,但是 Kotlin 没有特殊的注解,只需要提供一个方法体:

interface clickable{
    fun click()
    fun showOff() = println("I am clickable") //接口中的默认方法,接口的实现类可重写,也可不重写接口中的默认方法
}

注意,如果一个类实现的两个接口中都包含了带默认实现的方法,那么该类关于该方法的一个实现都不会使用,而强制要求你自己在类中提供自己的实现,Java 和 Kotlin 都是这样。



参考:

Java中的接口都是抽象方法吗?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值