学习的步伐(六) Kotlin 学习总结:类的特性
来源:互联网 发布:ccd视觉编程软件 编辑:程序博客网 时间:2024/06/08 17:36
- 共同学习
学习的步伐(五) 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 }
后续会陆续完善补充! 欢迎吐槽!一起共同学习!
阅读全文
0 0
- 学习的步伐(六) Kotlin 学习总结:类的特性
- 学习的步伐(四) Kotlin 基础语法学习总结:操作符
- 学习的步伐(五) Kotlin 基础语法学习总结:语法
- 学习的步伐(一)Kotlin Primer编程之android简单项目
- 学习的步伐(三)Kotlin TabLayout+Viewpager+Fragment实现基础框架
- 跟着我的步伐学习HTML5新特性研究入门
- 学习的步伐(二)Kotlin 实现Recyclerview列表(补充:tab选项卡+CoordinatorLayout收缩布局+复杂Recyclerview列表)
- Kotlin学习(学习kotlin的日子)
- 我的Kotlin学习之旅(六)
- kotlin学习笔记(六)
- Android开发,Kotlin的了解与学习(六)-----类与继承
- 1. 学习的步伐不停止
- 关于ARM的嵌入式学习步伐
- Kotlin语言的学习
- Kotlin的学习汇总
- Kotlin学习-类和对象(六)
- Kotlin学习笔记(六)扩展
- Kotlin开发语言学习(4) 类特性
- c++ 二维数组出杨辉三角
- Scala入门到精通——第十九节 隐式转换与隐式参数(二)
- 欢迎使用CSDN-markdown编辑器
- 『ORACLE』ORA-01565: error in identifying file '+DATA/rac11g/spfilerac11g.ora'(11g)
- jeb2.2.5 破解版
- 学习的步伐(六) Kotlin 学习总结:类的特性
- shell脚本将gbk文件转化为utf-8
- oracle 根据时间排序,删除相邻的除排序字段均相同的两条中较新的一条记录
- 突然想写点东西
- TOMCAT动态热部署WEB项目依赖的第三方jar包
- HDU
- github客户端上传代码 mac 注意事项
- Shell 第一个脚本
- IOS 传感器