IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Kotlin 学习笔记 六:面向对象(上) -> 正文阅读

[移动开发]Kotlin 学习笔记 六:面向对象(上)

1.this关键字总是指向调用该方法的对象

2.大部分时候。一个方法访问该类中定义的其他方法、属性时加不加this前缀,效果时一样的,但是省略this前缀只是一种假象而已.实际上在编译的时候这个this会自动添加上

3.方法是类或对象行为特征的抽象,方法是类或对象最重要的组成部分

4.kotlin标准库提供了pair和triple两个数据量,pair类可以包含任意两个类型数据,triple类可以包含三个

5.在Kotlin类中定义属性后,被Kotlin程序使用时只能使用点语法访问属性;被Java程序使用时只能通过getter、setter方法访问属性

6.在定义属性时可以指定自定义的getter和setter方法,这些方法可以加入自己的控制逻辑,getter应该是无参数、带一个返回值的方法;setter是一个形如set(value){}的方法,setter应该是带一个参数、无返回值的方法

7.Kotlin在满足以下条件时,系统会为属性生成幕后字段(Kotlin为该属性所生成的field就被称为幕后字段)

该属性使用Kotlin自动生成的setter和getter方法或其中之一

重写getter、setter方法时,使用field关键字显示引用的幕后字段

8.当程序重写getter或setter方法时,不能通过点语法来对属性赋值,假如在name的setter方法中使用了点语法对属性赋值,实际上就是调用了setter方法,这样就会形成无限递归,因此只能通过field引用幕后字段,从而实现对幕后字段的赋值的

9.在个别情况下,开发者希望自己定义field,并为该field提供setter、getter方法,这时候就可以使用private修饰,kotlin不会为其生成任何getter和setter方法

10.kotlin提供了lateinit修饰符来为属性延迟初始化,可以在定义该属性时和在构造器中都不指定初始化值,lateinit修饰符有以下限制

lateinit只能修饰在类体中声明的可变属性(使用val声明的属性不行,在主构造器中声明的属性也不行)

lateinit修饰的属性不能有自定义的getter或setter方法

lateinit修饰的属性必须是非空类型

lateinit修饰的属性不能是原生类型

? ? ? kotlin不会为属性执行默认初始化,因此,如果在lateinit属性赋值初始化之前访问,会引发异常

11.内联属性,inline修饰符可以修饰没有幕后字段的属性的getter或setter方法

12.封装是面向对象的三大特征之一,对一个类或对象实现良好的封装,可以实现以下目的

隐藏类的实现细节

让使用者只能通过事先预定的方法来访问数据,从而可以在该方法里加入控制逻辑,限制对属性的不合理访问

可以进行数据检查,从而有利于保证对象信息的完整性

便于修改,提高代码的可维护性

13.Kotlin提供了四个访问控制符

private:private只能改该类的内部或文件的内部被访问

internal:internal成员可以在该类的内部或文件的内部或同一模块的内部被访问

protected:protected成员可以在该类的内部或文件的内部或其子类被访问

public:public成员可以在任意位置被访问

14.对kotlin而言,初始化块会在创建对象时隐式执行

15.所有的次构造器都要委托调用主构造器,主构造器的作用就是执行初始化块以及为初始化块定义参数

16.继承是面向对象的三大特征之一,也是实现软件复用的重要手段。Kotlin的继承同样是单继承:每个子类最多只有一个直接父类

17.kotlin的类默认就有final修饰,因此kotlin的类默认是不能派生子类的。为了让一个类能派生子类,需要使用open修饰符修饰该类

18.当调用子类构造器来初始化子类对象时,父类构造器总会在子类构造器之前执行,依此类推,任何kotlin对象,总会先执行Any类的构造器

19,子类继承父类,将可以获得父类的全部属性和方法

20.方法的重写遵循“两同、两小、一大”方法名字,形参列表相同,返回值类型要比父类返回值类型相等或更小,子类方法声明抛出的异常应比父类方法声明抛出的异常相等或更小,子类方法的访问权限应该比父类方法的访问权限更大或相等

21.如果某个方法中访问名为a的属性,但没有显式指定调用者,系统查找a的顺序为:

查找该方法中是否有名为a的局部变量

查找当前类中是否包含名为a的属性

查找a的父类是否包含名为a的属性,依此类推

22.Kotlin的变量有两个类型:一个是编译时类型,一个是运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋值给该变量的对象决定。如果编译时类型和运行时类型不一致,就有可能出现所谓的多态

23.kotlin的is和!is都非常的只能,只要程序使用了is或者!is对变量进行了判断,系统就会自动将变量的类型转换为目标类型

24.除了is自动转型以外,kotlin也支持使用as运算符进行强制转型

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-26 12:13:18  更:2021-08-26 12:15:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:39:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码