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运算符进行强制转型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值