学习的步伐(六) Kotlin 学习总结:类的特性

原创 2017年07月04日 13:33:02
  • 共同学习

学习的步伐(五) Kotlin 基础语法学习总结:语法

学习的步伐(四) Kotlin 基础语法学习总结:操作符

学习的步伐(三)Kotlin TabLayout+Viewpager+Fragment实现基础框架

学习的步伐(二)Kotlin 实现Recyclerview列表

  • 构造方法
public  open class  Person  (var name : String){
    /**
     * 类的构造方法中:
     * 1.可以直接在类后面写(这样称之为主体构造)
     * 2.name默认是public val的常量 ,val是只读不可修改,var是可以修改单的
     * 3.如果不希望其他类访问,可以设置private
     * 4.如果希望name是变量,需要加上var,如果修改name的值的话可以在init{}修改
     * 5.创建类的实体:val Person = Person("创建类的实体")
     * */

    init {
        name="hello"
    }

     internal fun say(){
        Log.e(">>>>>>>>>>>>>>","hello $name")
    }
    }

如果要指定一个类的主构造函数的可见性,请使用以下语法(注意需要添加显式的构造函数关键字):

class Person public  constructor (var name : String) {

}

  • 创建类的实体
val Person = Person("创建类的实体")

  • 继承
/**
*Kotlin 中所有的类都有共同的父类 Any ,一个类没有父类声明,它默认继承(隐式继承)父类:
*/
public class  Aww {

}
/**
 * kotlin 修饰符
 * Kotlin给每个类的默认修饰符是final的,如果我们希望其他类可以继承这个类需要加上 open修饰符
 * */

public class  Aww(name: String) : Person(name) {

}
public  open class  Person  (var name : String){

}

  • 内部类
    第一种:跟正常java写法差不多
class AClass (name : String){

    private val string: String = "我是外部类常量"
    class Nested {
        fun foo() = 2
       //fun foo() = string   调用外部类的常量是不允许的
    }
}

//调用
        val demo = AClass.Nested().foo() // 结果是= 2

第二种:给内部类加上 inner

//官方介绍: 一个类可以标记为内部,以便能够访问外部类的成员。内部类对外部类的对象进行引用:
class AClass (name : String){

    private val string: String = "我是外部类常量"
    inner class Nested {
    //inner 就是一个标记 让内部类可以调用外部类的成员
        fun foo() = string
    }
}

  • 修饰符

    /**
     * 因为kotlin默认的权限修饰符是public的,
     * internal权限修饰符:属于模块级别的,也就是说编译时在统一个modle下的文件才有权利访问,不同的modle(我们开发时经常会用到不同的modle作为依赖,或者不同的app(跨应用))没有权利访问internal变量或方法
     *
     * */
    internal fun say(){
        Log.e(">>>>>>>>>>>>>>","hello $name")
    }

  • 重写(方法/属性)
public  open class  Person  (var name : String){
//如果想重写父类的方法(属性),必须给函数加上open
      open fun say1(){
        Log.e(">>>>>>>>>>>>>>","$name")
    }
}
//
public class  Aww(name: String) : Person(name) {
    override fun say1() {
        super.say1()
    }
}

重写规则:

例举一个场景:
Aww 继承了Person,同时有实现了一个自定义的接口(InterFace1),而Person和InterFace1里有一个函数名称是一样的:
public class  Aww(name: String) : Person(name) ,InterFace1{

}

public  open class  Person  (var name : String){
    open fun say1(){
         Log.e(">>>>>>>>>>>>>>","Person")
    }
   } 

 interface InterFace1{
    fun say1(){
          Log.e("我是接口:","InterFace1")
    }
 }

 那么当我们重写say1()函数时:
   override fun say1() {
        //需要在super<"在这里声明重写的方法属于哪个">
        //提示我们要指定:Many supertypes available, please specify the one you mean in angle brackets, e.g. 'super<Foo>
        super<Person>.say1()
        super<InterFace1>.say1()
        //当然可以同时声明两个
        //打印结果:
        07-04 13:16:13.875 27192-27192/webred.cp.example.com.kotlingrammar E/>>>>>>>>>>>>>>: Person
        07-04 13:16:13.875 27192-27192/webred.cp.example.com.kotlingrammar E/我是接口:: InterFace1
    }

后续会陆续完善补充! 欢迎吐槽!一起共同学习!

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

学习的步伐(四) Kotlin 基础语法学习总结:操作符

孔子曰:温故而知新!当初学习这些语法的时候有些地方,有时候能看懂,有时候又看不懂。经常感觉自己的后觉神经比较长,经常复习还是非常有必要的!本文主要是我自己的复习笔录。有什么总结不对的欢迎大家指出!主要...

学习的步伐(五) Kotlin 基础语法学习总结:语法

共同学习 学习的步伐(六) Kotlin 学习总结:类的特性 学习的步伐(四) Kotlin 基础语法学习总结:操作符 学习的步伐(三)Kotlin TabLayout+Viewpager+...

学习的步伐(一)Kotlin Primer编程之android简单项目

Kotlin相关资料: 原文网址: https://kotlinlang.org/docs/reference/代码库: https://github.com/JetBrains/kotlin-web...

学习的步伐(二)Kotlin 实现Recyclerview列表(补充:tab选项卡+CoordinatorLayout收缩布局+复杂Recyclerview列表)

一日之计在于晨,来一发!补充功能:效果图demo源码 tab选项卡+CoordinatorLayout收缩布局+复杂Recyclerview列表 学习的步伐(六) Kotlin 学习总结:类的特性 ...

学习的步伐(三)Kotlin TabLayout+Viewpager+Fragment实现基础框架

看过一本书,名字是《你只是看起来很努力》。个人感觉很不错!每天学一点,时间久了总会进步的!Kotlin系列 学习的步伐(六) Kotlin 学习总结:类的特性 学习的步伐(五) Kotlin 基础...

跟着我的步伐学习HTML5新特性研究入门

HTML5 简介 HTML5是HTML最新的修订版本,2014年10月由万维网联盟(W3C)完成标准制定。 HTML5的设计目的是为了在移动设备上支持多媒体。 HTML5 简单易学。 ...

[笔记] 代码学习速率:跟上开源的步伐

代码学习速率:跟上开源的步伐从Kubernetes搭建个PaaS出来,刚实现完app的HA方案,就又得去看数据库连接管理了。MariaDB的存储引擎好像代码并不是特别多,但掌握起来也要一段时间。之后还...

Android开发,Kotlin的了解与学习(六)-----类与继承

前几章已经把kotlin最基本的语法、数据结构等说清楚了,接下来这两章主要讲解kotlin中关于类和接口的相关知识 类 类这个东西使用和java比较类似,最简单的如下 class i...

Kotlin学习总结文档

第一章 数据类型 基础数据类型 变量和常量 字符串 Any数据类型 集合数据类型 数组 第二章 操作符 判空操作符 等号操作符 in 和downTo 第三章 控制流 IF表达式 When表达式 Fo...

Kotlin学习笔记(六)扩展

提示:本文为作者阅读Kotlin中文站学习笔记,建议读者移步Kotlin中文站完整学习。Kotlin中,我们可以扩展一个类的函数和属性,而无需继承这个类或使用像装饰者这样的设计模式。声明一个扩展函数,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习的步伐(六) Kotlin 学习总结:类的特性
举报原因:
原因补充:

(最多只允许输入30个字)