美文网首页
kotlin学习第五课

kotlin学习第五课

作者: 恰我年少时 | 来源:发表于2021-04-05 11:11 被阅读0次
    
    import java.lang.reflect.Array.set
    
    /**属性拥有默认提供的setter和getter方法
     * setter:提供给外部设置值的一个方法
     * getter:提供给外部访问值
     * val声明的变量  默认只有getter方法,var有setter和getter
     *      比如:setWeight()和getWeight
     *      重写get和set方法:
     *      在设置值(dog1.weight=30)时:进入到weight的set方法
     *
     */
    class Shape{
        var SideCount = 0
        fun perimeter():Int{
            return 0
        }
        class Inclass{/**嵌套类,和外部类没有关系,唯一的关系是在外部类的内部**/
            //静态类,当外部类被加载的时候就会被加载进来。不能访问外部类的属性和方法
    
        }
        /**内部类,普通的实例类,必须要有外部的一个对象才能访问,可以访问外部类的属性和方法(因为已经有对象)*/
        inner class DoSomething{
    
        }
    }
    
    /**继承、封装、多态。
     *      继承:获取父类的所有东西,extends和 ":"
     *      open class Animal{}
     *      class Dog:Animal(){}
     *          类默认不能被继承(私有),使用open修饰这个类才能被继承
     *      自定义控件View和ViewGroup
     */
    
    class Network{
        companion object{
            var cont:Int=0
        }
        fun Instance():Network{
            var a = Network()
            return a
        }
        var data:String? = null
            set(value) {
    
                field=value
                print("set方法")
                showUI()
            }
        fun loadData(){
            data = "网易新闻"
    
        }
        fun showUI(){
            Network.cont+=1
            println("把数据显示到界面上:${data}  第${cont}次")
        }
    
    }
    open class Animal(name:String){
        open
        var weight:Int = 10
            set(value) {field=value+1}
            get(){return field-1}
        open fun sleep(){
            print("Animal Sleep")
        }
    }
    class Cat(hh:Int){
        //对象创建:0、主构造函数    1、属性     2、init     3、次构造函数
        var age = 10
        init {
            print("init方法")
    
            println("$age")
        }
        constructor(name:String,age:Int):this(age){
            print("次构造函数")
            this.age+=1/**this调用该方法的对象*/
            print("$age")
        }
        /**补充:this的使用:
         *
         */
        //重写override,重载overload
    }
    class Dog(var name:String):Animal(name){
        override fun sleep(){
            super.sleep()
            print(" $name is sleeping")
        }
    }
    fun main() {
        var shape = Shape()
        var inclass = Shape.Inclass()/**不需要创建对象**/
        var innerclass = Shape().DoSomething()/**需要创建对象,再调用对象的类*/
        var a = Network()
        a.loadData()
        a.showUI()
        println()
    //    var b = Cat("小猫")
        var c = Dog("xh")
        c.sleep()
    }

    相关文章

      网友评论

          本文标题:kotlin学习第五课

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