kotlin的构造函数看这一篇就够了(代码片段)

warmor warmor     2023-04-03     279

关键词:

在kotlin中,一个标准的继承写法是这样的 class AA : BB() ,你想过没有,为什么AA后面没有括号,而BB后面有呢?

Kotlin和Java中有这样两个特性:

1.子类继承父类时,需要在构造函数中调用父类的构造函数

2.如果一个类没有编写构造函数,系统会默认有一个无参的构造函数

因此BB类后面的括号,就是调用的BB的无参构造函数。

在kotlin中,还有这样一些特性:

每个类最多有一个主构造函数(可以没有),可以有多个次构造函数,如果有主构造函数,那么次构造函数必须要用this直接或间接调用主构造函数

看下面的例子就能够明白啦~

open class BB (val a: Int) //这里跟在类名后面的就是主构造函数啦(没有实现体) val a 代表类中有一个成员变量a,如果在其他地方实例了BB(3),就相当于把成员变量a赋值为3,如果是var a,那就是临时的形参了
    var aa = 5
    init 
        // 可以做一些初始化,运行顺序是 主构造函数 > init块 > 次构造函数
    
    constructor(a: Int, b: Int) : this(a)  //通过this直接调用主构造函数
    
    constructor(a: Int, b: Int, c: Int) : this (a, b) //通过this调用次构造函数,间接调用了主构造函数
    

AA后面之所以没有括号,就是因为它没有主构造函数,如果有主构造函数了,那么就要加上括号了。看看下面几个例子,巩固一下:

open class BB 

class  AA : BB 
    constructor() : super() //没有主构造函数,所以在次构造函数中调用BB的默认构造函数
    

//========================
open class BB 

class  AA : BB () //调用BB的默认构造函数

//========================
open class BB 
    constructor(a: Int, b: Int) 
    
    constructor(a: Int, b: Int, c: Int) : this (a, b)
    

class  AA(a: Int, b: Int) : BB(a, b)  //BB没有主构造函数,所以调用BB的次构造函数
    constructor(a: Int) : this(a, a) 
    

到这里,关于Kotlin的构造函数就讲完了,文章开头的问题,你也清楚了吧?如果还有什么疑问,欢迎留言跟我交流哦~

想要弄懂groupby看这一篇就够了(代码片段)

...是非常有必要的。要弄懂groupby那我们就得联合着:聚合函数、groupby、having一块讲解。讲之前我们先准备一张表:二、聚合函数为了讲好groupby我们必须先将聚合函数,所以大家别着急,一步步往下看。聚合函数是将“若干行数据... 查看详情

elasticsearch入门,看这一篇就够了(代码片段)

Elasticsearch入门,看这一篇就够了前言可视化工具kibanakibana的安装kibana配置kibana的启动Elasticsearch入门操作操作index创建index索引别名有什么用删除索引查询索引exist索引操作document插入document查询document删除document更新document使用... 查看详情

es6promise(承诺)看这一篇就够了(代码片段)

...通常都会去new一个Promise,什么东西可以new啊?是不是构造函数可以new,通过控制台dir一下Promise    通过上面的输出,你可以知道promise是一个构造函数,而上面常见的几个方法,resolve、reject、catch、resolve你不... 查看详情

handler看这一篇就够了(代码片段)

Handler使用首先来熟悉一下Handler的四种使用方式,如果比较熟悉可以直接跳过:通过sendMessage消息机制来发送sendEmptyMessage(int);//发送一个空的消息sendMessage(Message);//发送消息,消息中可以携带参数sendMessageAtTime(Message,long... 查看详情

最全排序算法及优化,看这一篇就够了(代码片段)

最全排序算法总结看这一篇就够了没有经过总结的知识是沉重的,无用的瞧一瞧~博健的LeetCode题解:Gitbook版本传送门博健的LeetCode题解:CSDN传送门有趣的CSS:Gitbook传送门前端进阶笔记:Gitbook传送门目录... 查看详情

css渐变背景看这一篇就够了(代码片段)

CSS渐变背景看这一篇就够了在我们自己设计网页的时候,为了好看美观,颜色可谓是最让人头疼的一部分。尤其是在配色上又找不到一些好看的网站。今天我就来记录一些好看的渐变式背景,和一些常用的颜色网站。... 查看详情

系统性的学会pandas看这一篇就够了(代码片段)

作者:MaSizhou https://blog.csdn.net/weixin_45901519/article/details/1129808221、Pandas数据结构2008年WesMcKinney开发出的库专门用于数据挖掘的开源python库以Numpy为基础,借力Numpy模块在计算方面性能高的优势基于matplotlib,能够简便的... 查看详情

架构整洁之道,看这一篇就够了!(代码片段)

阿里妹导读:程序的世界飞速发展,今天所掌握的技能可能明年就过时了,但有些知识历久弥新,掌握了它们,你在程序的海洋中就不会迷路,架构思想就是这样的知识。本文是《架构整洁之道》的读书心得,作者将书中内容拆... 查看详情

mybatis基础应用,看这一篇就够了!(代码片段)

文字分享希望现在的你无论有明确具体的目标还是没有,都能重视自己的需求和目标,并且常常回顾,或许可以找一个你习惯的方式写出来,挂在哪里,电脑或日记本都好。当你疲惫或迷茫的时候拿出来看一... 查看详情

☀️javanio?看这一篇就够了!!☀️(代码片段)

文章目录一、NIO简介1.1NIO概述1.2NIO&IO分析1.2.1IO操作流程1.2.2面向流与面向缓冲区1.2.3阻塞与非阻塞1.2.4.同步与异步二、Buffer基本应用2.1Buffer概述2.2Buffer基本应用三、Channel基本应用3.1Channel概述3.2FileChannel基本应用3.3SocketChanel基... 查看详情

☀️javanio?看这一篇就够了!!☀️(代码片段)

文章目录一、NIO简介1.1NIO概述1.2NIO&IO分析1.2.1IO操作流程1.2.2面向流与面向缓冲区1.2.3阻塞与非阻塞1.2.4.同步与异步二、Buffer基本应用2.1Buffer概述2.2Buffer基本应用三、Channel基本应用3.1Channel概述3.2FileChannel基本应用3.3SocketChanel基... 查看详情

java千问25:关于java类的构造方法,看这一篇就够了!

​Java语言中,类的构造方法是一种很特殊的方法。关于构造方法要记忆和理解的知识点其实挺多的,下面我们就来详细的讲讲构造方法,相信看过这篇文章之后,你会对构造方法有一个比较深刻的认识和理解。(预警:此文较长... 查看详情

redux从入门到进阶,看这一篇就够了!(代码片段)

Redux,带你从入门到进阶🌂序言☂️一、基础知识1、Redux概念简述2、Redux的工作流程🎃二、使用Antd实现TodoList页面布局1、在项目中使用Antd2、使用Antd实现TodoList的基本布局3、创建redux中的store(1)创建storeÿ... 查看详情

redux从入门到进阶,看这一篇就够了!(代码片段)

Redux,带你从入门到进阶🌂序言☂️一、基础知识1、Redux概念简述2、Redux的工作流程🎃二、使用Antd实现TodoList页面布局1、在项目中使用Antd2、使用Antd实现TodoList的基本布局3、创建redux中的store(1)创建storeÿ... 查看详情

关于el-upload看这一篇就够了(代码片段)

下述源码分析基于Elementv2.15.9版本前提在解析源码之前,先阐述其重点使用的两个基础内容:<inputtype="file">使用type=“file”的元素使得用户可以选择一个或多个元素以提交表单的方式上传到服务器上,... 查看详情

关于el-upload看这一篇就够了(代码片段)

下述源码分析基于Elementv2.15.9版本前提在解析源码之前,先阐述其重点使用的两个基础内容:<inputtype="file">使用type=“file”的元素使得用户可以选择一个或多个元素以提交表单的方式上传到服务器上,... 查看详情

cas自旋锁,看这一篇就够了(代码片段)

前序时隔多年,杰伦终于出了新专辑,《最伟大的作品》让我们穿越到1920年,见到了马格利特的绿苹果、大利的超现实、常玉画的大腿、莫奈的睡莲、徐志摩的诗…他说“最伟大的作品”并不是自己的歌,而是这... 查看详情

逆转单向链表看这一篇就够了java(代码片段)

逆转单向链表逆转前:1->2->3->4->5->null逆转后:5->4->3->2->1->null个人博客地址:逆转单向链表方法一、循环迭代publicNodereverse(Nodehead)if(head==null||head.next==null)returnhead;//取前面节点Nodepre=head;//取后面 查看详情