android:kotlin详细入门学习指南-类和对象(上)-基础语法(代码片段)

拖鞋王子猪 拖鞋王子猪     2022-12-06     671

关键词:

本人也是在初学Kotlin,如有错误,请帮忙指出,持续更新

Android:Kotlin详细入门学习指南-类和对象-基础语法(四)

建议先看看前面的文章
Android:Kotlin详细入门学习指南-基础语法(一)

Android:Kotlin详细入门学习指南-基本类型-基础语法(二)

Android:Kotlin详细入门学习指南-包-控制流-返回与跳转-基础语法(三)

这篇文章分享的内容比较多,建议先关注收藏,再查看,以免迷路

类和对象

  • 类和继承
  • 属性和字段
  • 接口
  • 可见性修饰词
  • 扩展
  • 数据对象
  • 泛型
  • 嵌套类
  • 枚举类
  • 对象表达式和声明
  • 委派模式
  • 委派属性
类和继承

在 Kotlin 中类用 class 声明:

class Invoice  

类的声明包含类名,类头(指定类型参数,主构造函数等等),以及类主体,用大括 号包裹。类头和类体是可选的;如果没有类体可以省略大括号。

构造函数

Kotlin的构造函数和java的还是有点区别
在 Kotlin 中类可以有一个主构造函数以及多个二级构造函数。主构造函数是类头的 一部分:跟在类名后面(可以有可选的类型参数)。

class Person constructor(firstName: String)  

如果主构造函数没有注解或可见性说明,则 constructor 关键字是可以省略:

class Person(firstName: String) 

主构造函数不能包含任意代码。初始化代码可以放在以 init 做前缀的初始化块内

class Customer(name: String)  
	init 
		logger,info("Customer initialized with value $name") 
	 

注意主构造函数的参数可以用在初始化块内,也可以用在类的属性初始化声明处:

class Customer(name: String)  
	val customerKry = name.toUpperCase() 

声明属性并在主构造函数中初始化,在 Kotlin 中有更简单的语法

class Person(val firstName: String, val lastName: String, var age : Int)  

在主构造函数中的属性可以是可变的( var )或只读的( val )。 如果构造函数有注解或可见性声明,则 constructor 关键字是不可少的

二级构造函数

类似java的重载
类也可以有二级构造函数,需要加前缀 constructor :

class Person  
	constructor(parent: Person)  
		parent.children.add(this) 
	 

如果类有主构造函数,每个二级构造函数都要,或直接或间接通过另一个二级构造 函数代理主构造函数。在同一个类中代理另一个构造函数使用 this 关键字:

class Person(val name: String)  
	constructor (name: String, paret: Person) : this(name)  
		parent.children.add(this) 
	 

如果一个非抽象类没有声明构造函数(主构造函数或二级构造函数),它会产生一个 没有参数的构造函数。该构造函数的可见性是 public 。如果你不想你的类有公共的 构造函数,你就得声明一个拥有非默认可见性的空主构造函数:

class DontCreateMe private constructor ()  

注意:在 JVM 虚拟机中,如果主构造函数的所有参数都有默认值,编译器会 生成一个附加的无参的构造函数,这个构造函数会直接使用默认值。这使得 Kotlin 可以更简单的使用像 Jackson 或者 JPA 这样使用无参构造函数来创建类 实例的库。

创建类的实例
val invoice = Invoice() 
val customer = Customer("Joe Smith")

注意 Kotlin 没有 new 关键字。
内部类要使用inner关键字。

类成员

类可以包含:

  • 构造函数和初始化代码块
  • 函数
  • 属性
  • 内部类
  • 对象声明
继承

Kotlin 中所有的类都有共同的父类 Any ,java是Obejct,它是一个没有父类声明的类的默认父 类:
Any 不是 java.lang.Object ;事实上它除了 equals() , hashCode() 以 及 toString() 外没有任何成员了。
声明一个明确的父类,需要在类头后加冒号再加父类

open class Base(p: Int) 
class Derived(p: Int) : Base(p)

普通的类如果需要被继承就需要有open关键字
open 注解与java中的 final 相反:它允许别的类继承这个类。默认情形下,kotlin 中所有的类都是 final

复写方法
open class Base  
	open fun v()  
	fun nv()  
class Derived() : Base()  
	override fun v()  

对于 Derived.v() 来说 override 注解是必须的。如果没有加的话,编译器会 提示。如果没有 open 注解,像 Base.nv() ,在子类中声明一个同样的函数是不 合法的,要么加 override 要么不要复写。在 final 类(就是没有open注解的类) 中, open 类型的成员是不允许的。
普通方法标记open,可被重写

复写属性

复写属性与复写方法类似,在一个父类上声明的属性在子类上被重新声明,必须添 加 override ,并且它们必须具有兼容的类型。每个被声明的属性都可以被一个带 有初始化器的属性或带有getter方法的属性覆盖

复写规则

在 kotlin 中,实现继承通常遵循如下规则:如果一个类从它的直接父类继承了同一 个成员的多个实现,那么它必须复写这个成员并且提供自己的实现(或许只是直接用 了继承来的实现)。为表示使用父类中提供的方法我们用 super 表示:

open class A  
	open fun f ()  
		print("A") 
	 
	fun a()  
		print("a") 
	 

interface B  
	fun f()  
		print("B") 
 // 接口的成员变量默认是 open 的 
fun b()  
	print("b") 
	 

class C() : A() , B  
// 编译器会要求复写f() 
	override fun f()  
		super<A>.f() // 调用 A.f() 
		super<B>.f() // 调用 B.f() 
	 

可以同时从 A 和 B 中继承方法,而且 C 继承 a() 或 b() 的实现没有任何问题,因为 它们都只有一个实现。但是 f() 有俩个实现,因此我们在 C 中必须复写 f() 并且提供 自己的实现来消除歧义。
这次就先分享到这里,下次再继续分享。

本人也是在初学Kotlin,如有错误,请帮忙指出,持续更新

android:kotlin详细入门学习指南-函数-基础语法(代码片段)

...#xff0c;请帮忙指出,持续更新Android:Kotlin详细入门学习指南-函数-基础语法(六)建议先看看前面的文章Android:Kotlin详细入门学习指南-基础语法(一)Android:Kotlin详细入门学习指南-基本类型-基础语法(二)Android:Kotl... 查看详情

android:kotlin详细入门学习指南-高阶函数-基础语法(代码片段)

...#xff0c;请帮忙指出,持续更新Android:Kotlin详细入门学习指南-高阶函数-基础语法(七)建议先看看前面的文章Android:Kotlin详细入门学习指南-基础语法(一)Android:Kotlin详细入门学习指南-基本类型-基础语法(二)Android࿱... 查看详情

android:kotlin详细入门学习指南-基础语法(代码片段)

Android:Kotlin详细入门学习指南-基础语法(一)本人也是在初学Kotlin,如有错误,请帮忙指出,持续更新Kotlin被Google官方认为是Android开发的一级编程语言自2019年GoogleI/O以来,Kotlin就成为了Android移动开发的首选。... 查看详情

android:kotlin详细入门学习指南-包-控制流-返回与跳转-基础语法(代码片段)

...#xff0c;请帮忙指出,持续更新Android:Kotlin详细入门学习指南-包-控制流-返回与跳转-基础语法(三)建议先看看前面的文章Android:Kotlin详细入门学习指南-基础语法(一)Android:Kotlin详细入门学习指南-基本类型-基础语法(... 查看详情

五年java一朝转为kotlin,这份kotlin协程入门指南太详细了

自2017年谷歌宣布将Kotlin语言作为Android的一级开发编程语言后,Kotlin炒的可谓是相当的火热。Kotlin与Java的互通性、高效率等的特点让代码更简单,官方也表示Kotlin语言在未来或将实现在支持平台之间更好、更广泛的代码... 查看详情

kotlin语法学习(代码片段)

文章目录Kotlin语法学习(二)面向对象编程类和对象继承和构造函数接口访问修饰符数据类和单例Kotlin语法学习(二)面向对象编程类和对象创建一个Person类openclassPerson/***姓名*/varname=""/***年龄*/varage=0/***人的吃饭方法*/fune... 查看详情

kotlin协程入门指南+进阶实战,kotlin语言真的太香了(代码片段)

2017年,Google在的I/O大会上宣布Kotlin正式成为Android的一级开发语言。这门新语言学习成本低、还可以和Java互相调用、非常人性化,自发布伊始其使用人数就呈爆发式的增长。直至今日,已有**35%**的Android专业开发人员... 查看详情

最全androidkotlin入门教程(kotlin入门指南高级kotlin强化实战kotlin协程进阶实战)

...tlin是一种新型的静态类型编程语言,有超过60%的专业Android开发者在使用,它有助于提高工作效率、开发者满意度和代码安全性。不仅可以减少常见代码错误,还可以轻松集成到现有应用中。目前在安卓开发中,... 查看详情

android开发学习之路--kotlin之类及对象

前言1类和继承1.1类classMyClass1.2构造函数一个主构造函数以及多个二级构造函数classPersonconstructor(firstName:String)//也可以省略constructor,写成:classPerson(firstName:String)在@Inject的时候不能省略constructorclassPerson@In 查看详情

2022最全面&详细的android学习指南,零基础快速入门的通道

...体的学习方法和学习路线,这里给大家分享一份Android学习指南,其主要有java、kotlin、Android技术栈、jetpack四个模块,附赠Androidstudio安装教程 查看详情

写过几年java,想转kotlin怎么办?就看这份kotlin入门教程指南

做了几年Android开发,我和大多数人一样感觉技术各方面遇到了瓶颈,想提高一下工作效率。之前对Kotlin这玩意儿有点排斥,但在真的用Kotlin写了一个项目之后,我真香了,后悔接触它太晚了。常用的kotlin的logg... 查看详情

图书推荐:kotlin从入门到进阶实战

...介绍了使用Kotlin+SpringBoot进行服务端开发和使用Kotlin进行Android应用程序开发的内容,让读者不但可以系统地学习Kotlin编程的相关知识,而且还能对Kotlin应用开发有更为深入的理解。本书分为14章,涵盖的主要内容有Kotl 查看详情

Kotlin 中类和对象的区别

...近将一个简单的文件从java转换为Kotlin。我想知道为什么Android转换器将我的java类更改为Kotlin对象。Java:publicclassMyClassstaticpublicintGenerateChecks 查看详情

字节+谷歌超全kotlin学习王炸笔记,kotlin入门教程+高级kotlin强化实战(附demo)(代码片段)

...们为什么要尝试Kotlin?Google发布申明,目前已经有35%的Android专业开发人员使用kotlin(爆发式增长)Google与Oracle源于Android的恩怨持续已久,也一直想要找一种语言代替JavaJava以后要开始收费了,可能导致一部分公... 查看详情

2022最全面&详细的android学习指南,零基础快速入门的通道

随着Android技术栈的不断扩展,不少新的技术如Flutter、RN、小程序等涌入我们的视野,也有越来越多的人投身入Android开发的赛道。无论你是35岁正在遭遇中年职业危机的程序员,还是刚刚毕业的大学生/研究生,想... 查看详情

kotlin入门基础语法学习笔记(代码片段)

敲了一天的kotlin基础语法,整理归纳到一个类里面,便于以后忘记的时候复习。/***CreatedbyGGon2017/11/20.*///main函数funmain(args:Array<String>)vartestMain=TestMain()print(testMain.array())classTestMain//单例的写法compani 查看详情

kotlin系统入门与进阶

第1章课程介绍  1-1课程导学  1-2什么是Kotlin?第2章数据类型  2-1Boolean数据类型  2-2Number数据类型  2-3拆箱装箱与Char数据类型  2-4基础数据类型转换与字符串  2-5类和对象  ... 查看详情

kotlin快速入门:基础语法类与继承集合(代码片段)

...很详细,没有任何语言基础的也能看懂《第一行代码Android第三版》,第二章,有java基础的看一看就会了Kotlin中文文档,很详细,可以当作字典查看,挨着看有点太多了        目录1基 查看详情