美文网首页
kotlin中的类,抽象类和接口

kotlin中的类,抽象类和接口

作者: ModestStorm | 来源:发表于2022-09-26 19:33 被阅读0次

    一.类

    java中声明类:

    public class Person {
        private String name;
    
        public Person(String name) {
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    

    kotlin中声明类

    class Person(var name:String)
    fun main() {
        val person = Person("")
        person.name = "storm"
    } 
    

    可以看到kotlin中对类的声明简洁,默认实现了属性的set/get方法。

    kotlin中的继承

    /*kotlin中的类,默认是final类型的,表示类不可以被继承
    子类若要继承该类必须在父类上加open关键字修饰
    */
    open class MediaPlayer(var path:String) {
        // 类中的方法默认是public final类型的,子类若需要重写,方法上需要加上open关键字
        public open fun play(path:String):Unit{
        }
    }
    

    二.抽象类

    java中声明抽象类

    public abstract class Play {
        //抽象方法,需子类实现重写
        abstract void doWork();
    
        //默认方法,子类重写与否都可
        void doSomeThing(){
            
        }
    }
    

    kotlin中声明抽象类

    abstract class Play {
    
        //kotlin中抽象方法需子类重写
        abstract fun doWork();
    
       //默认是final类型的,如果需要子类重写需要加open关键字
       open fun doSomeThing(){
    
        }
    }
    
    class childPlay: Play() {
        override fun doWork() {
            TODO("Not yet implemented")
        }
    
        override fun doSomeThing() {
            super.doSomeThing()
        }
    }
    

    kotlin中的抽象类也需要使用abstract关键字来修饰,抽象方法也需要使用abstract关键字修饰,kotlin中的普通方法如果需要子类重写,需要使用open关键字修饰,因为kotlin中的普通方法默认是final类型的,表示方法不可以被子类重写。

    三.接口

    java中的接口

    public interface MediaPlayer {
        // java中接口变量默认是public static final类型的
        String path = "sdcard/a.mp3";
    
        //抽象方法,子类需要实现
        void play(String path);
    }
    

    kotlin中的接口

    interface MediaPlayer {
        // 变量字段需要实现get/set方法
        var path: String
            get() = "sdcard/a.mp3"
            set(value) = TODO()
    
        //默认是抽象方法,子类需要实现
        fun play(path:String)
    
        //kotlin中接口也可以包括具体的实现方法,这点与java不同
        fun test(){
    
        }
    }
    

    对比发现kotlin中的接口里面可以有普通方法的实现,这点与java不同,jdk8中可以使用default关键字修饰方法,达到相同的效果。

    相关文章

      网友评论

          本文标题:kotlin中的类,抽象类和接口

          本文链接:https://www.haomeiwen.com/subject/piamortx.html