当前位置:网站首页>九、Kotlin基础学习:1、Companion的扩展方法和扩展属性;2、一般类的扩展方法和扩展属性;3、委托;
九、Kotlin基础学习:1、Companion的扩展方法和扩展属性;2、一般类的扩展方法和扩展属性;3、委托;
2022-07-30 05:43:00 【¥伊人独醉】
1、Companion的扩展方法和扩展属性;
为一个类的伴生对象添加新的扩展方法和扩展属性。
条件:已有伴生对象。
【案例】伴生对象的扩展方法

Helper.kt

MainActivity.kt

日志:
【案例】伴生对象的扩展属性

MainActivity.kt

日志:
【案例】添加val的companion扩展属性


日志:
2、一般类的扩展方法和扩展属性;
【案例】扩展方法

Student.kt

MainActivity.kt

日志:
![]()
【案例】扩展属性
MainActivity.kt

日志:

3、委托;
什么是委托?
某某事情委托别人去办。
软件开发中有一种设计模式叫委托模式,或者叫代理模式。A类的工作交给B类来完成。多个类将共同的工作抽取出来交给另一个类来完成。如果业务发生变化,只需要修改委托类即可。
在kotlin中如何实现委托?
(1)类委托(方法委托)
将某某方法委托给另一个类去实现
语法:
class YYY:Interface by XXX(){}
表示YYY这个类实现了与XXX共同的Interface接口,在定义YYY时,可以不实现Interface接口的方法,将这个实现交给XXX来做。
【案例】

IWork.kt

WorkA.kt
WorkB.kt
MainActivity.kt
日志:
(2)属性委托
将某某属性委托给另一个类
语法:
var/val yyyProperty:类型 by XXX()
将当前类的yyyProperty属性,委托给XXX类来实现。
【案例】student和teacher类都有age这个属性,都需要大于0,设计时,将student的age委托给teacher来处理。

Student2.kt

Teacher.kt
MainActivity.kt

日志:
边栏推荐
- Arthas 命令解析(jvm/thread/stack/heapdump)
- TDengine cluster construction
- Oracle数据库SQL优化详解
- phpok website vulnerability exploitation analysis
- misc-log analysis of CTF
- MySQL - Function and Constraint Commands
- GraphQL (1) Basic introduction and application examples
- C# WPF中监听窗口大小变化事件
- Kotlin协程的简单用法:1、GlobalScope(不建议使用);2、lifecycleScope、viewModelScope(建议使用);
- GraphQL(一)基础介绍及应用示例
猜你喜欢

Monstache执行Monstache - f配置。toml出错不存在处理器类型和名称(附件)(= parse_exc类型

网上说的挖矿究竟是什么? 挖矿系统开发详解介绍

Blind injection, error injection, wide byte injection, stack injection study notes
![[MATLAB]图像处理——交通标志的识别](/img/45/1a5797a17ebf6db965a64c85e0f037.png)
[MATLAB]图像处理——交通标志的识别

MySQL 5.7 安装教程(全步骤、保姆级教程)

Use kotlin to extend plugins/dependencies to simplify code (after the latest version 4.0, this plugin has been deprecated, so please choose to learn, mainly to understand.)

MySQL 5.7 installation tutorial (all steps, nanny tutorials)

【MySQL功法】第5话 · SQL单表查询

Online sql editing query tool sql-editor

C#下利用开源NPlot绘制股票十字交叉线
随机推荐
Detailed explanation of regular expression syntax and practical examples
ClickHouse查询语句详解
【数仓】数据仓库高频面试题题英文版(1)
Remember a Mailpress plugin RCE vulnerability recurrence
[MATLAB]图像处理——交通标志的识别
oracle行转列、列转行总结
Reasons and solutions for Invalid bound statement (not found)
MySQL 5.7 安装教程(全步骤、保姆级教程)
Understand JDBC in one article
Servlet基本原理与常见API方法的应用
Bypassing the file upload vulnerability
使用kotlin扩展插件/依赖项简化代码(在最新版本4.0以后,此插件已被弃用,故请选择性学习,以了解为主。)
sqli-labs less3/4 Targeting Notes
利用自定义注解,统计方法执行时间
Using PyQt5 to add an interface to YoloV5 (1)
Trust anchor for certification path not found. Exception solution.
十七、Kotlin进阶学习:1、守护线程;2、线程和协程之间的效率对比;3、取消协程;
Online sql editing query tool sql-editor
Arthas 命令解析(jvm/thread/stack/heapdump)
Jdbc & Mysql timeout分析