Kotlin 类、对象和继承 接口

Kotlin基础——类、对象和接口 kotlin中同样使用interface关键字来定义接口,接口的含义和Java中类似,用于定义抽象使用interface关键字定义接口。实现一个接口跟Java中不同,Kotlin中继承类和实现接口都是使用冒号。重写接口中的方法,使用override关键字,与Java中不同的是,override是必须写的,如果不写则会报错。这会避免先写出实现方法再添加抽象方法造成的意外重写。和Java一样,Kotlin中的类只能继承一个类,但可以实现多个方法。 阅读详情
  1. 类

    Kotlin 中使用关键字 class 声明类。

        class MainActivity : AppCompatActivity() {
         //关键字 var 声明为可变的成员变量
         var name: String = '章三'
         var age: String = '19'
         //关键字val 声明为不可变的成员变量
          val TAG: String = 'MainActivity'
        
           override fun onCreate(savedInstanceState: Bundle?) {
               super.onCreate(savedInstanceState)
               setContentView(R.layout.activity_main)
               test()
           }
           
           //在类中定义成员函数:
           fun test() {
               var arrayLists = arrayOf("15", "68", "79", "09", "6")
               for ((index,value) in arrayLists.withIndex()) {
                   Log.e("arrayLists", "index => $index \t value => $value")
               }
           }
       }
    

    创建Test1

        class Test1 {
         var name: String = "张三"
         fun test() {
     
         }
      }
    

    引用

      var testName = Test1()
      Log.e("testName", "itestName " + testName.name)
    

    输出结果:

    testName: itestName 张三
    

    Kotlin set/get方法的使用

     class Test1 {
    
        //name用private私有修饰,外界其他地方不准访问,隐藏细节
        private var name: String = "张三"
    
        fun getName() : String{
            return name
        }
    
        fun setName(name:String) {
            this.name = name
        }
        //二级构造函数,需要加前缀 constructor
        constructor(val name: String)
    
        //初始化代码段使用 init 关键字作为前缀
        init {
            println("FirstName is $name")
        }
    
        fun test(val firstName: String) {
             setName(firstName) 
        }
    }
    
  2. 抽象类 (java的继承 extends, kotlin中(冐号):代替。Student : Base()
     package com.click.kotlindome
    
     open class Base {
        open fun go() {}
    
        open fun loading() {}
    
     }
    
    abstract class Student : Base() {
        override fun go() {
            super.go()
        }
    
        override fun loading() {
            super.loading()
        }
    }
    
  3. 嵌套类
      class Test1 {
    
         //name用private私有修饰,外界其他地方不准访问,隐藏细节
         private var name: String = "张三"
     
         fun getName() : String{
             return name
         }
     
         fun setName(name:String) {
             this.name = name
         }
     
         constructor()
     
         //初始化代码段使用 init 关键字作为前缀
         init {
             println("FirstName is $name")
         }
     
         fun test() {
     
         }
     
         class Text2{
     
             fun go(name :String){
                 
             }
         }
      }
    
      override fun onCreate(savedInstanceState: Bundle?) {
             super.onCreate(savedInstanceState)
             setContentView(R.layout.activity_main)
     
             var testName = Test1()
             // 调用格式:外部类.嵌套类.嵌套类方法/属性
             var name = Test1.Text2().go("ZHANSGAN")
             Log.e("testName", "itestName " + testName.getName())
             Log.e("testName", "name " + name)
         }
    
  4. 内部类(内部类使用 inner 关键字来表示,内部类会带有一个对外部类的对象的引用,可以访问外部类成员属性和成员函数)
        class Test1 {
     
     	    //name用private私有修饰,外界其他地方不准访问,隐藏细节
     	    private var name: String = "张三"
     	
     	    fun getName() : String{
     	        return name
     	    }
     	
     	    fun setName(name:String) {
     	        this.name = name
     	    }
     	
     	    constructor()
     	
     	    //初始化代码段使用 init 关键字作为前缀
     	    init {
     	        println("FirstName is $name")
     	    }
     	
     	    fun test() {
     	
     	    }
     	    //内部类使用 inner 关键字来表示
     	    inner class Text2{
     	        //// 访问外部类成员
     	        fun fristName() = name;
     	
     	        fun go(name :String){
     	
     	        }
     	        fun innerTest() {
     	            var o = this@Test1 //获取外部类的成员变量
     	            Log.e("testName", "内部类可以引用外部类的成员,例如:" + o.getName())
     	        }
     	    }
     	}
    
    
     class MainActivity : AppCompatActivity() {
    
         override fun onCreate(savedInstanceState: Bundle?) {
             super.onCreate(savedInstanceState)
             setContentView(R.layout.activity_main)
     
             var testName = Test1()
             var name = Test1().Text2().fristName()
             var name1 = Test1().Text2().innerTest()
             Log.e("testName", "itestName " + testName.getName())
             Log.e("testName", "name " + name)
             Log.e("testName", "name1 " + name1)
         }
    
    }
    
  5. 类的修饰符分为:访问权限修饰符和类属性修饰符
      accessModifier:访问权限修饰符
     ```
     private    // 仅在同一个文件中可见
     protected  // 同一个文件中或子类可见
     public     // 所有调用的地方都可见
     internal   // 同一个模块中可见
     ```
     classModifier: 类属性修饰符
     ```
     abstract    // 抽象类  
     final       // 类不可继承,默认属性
     enum        // 枚举类
     open        // 类可继承,类默认是final的
     annotation  // 注解类
     ```
    
  6. 接口(java的实现接口 implements, kotlin中(冐号):代替。Student : NameCallBack ,NameCallBack1 实现多个实用逗号隔开)
        import android.util.Log
     
     	interface NameCallBack {
     	    fun setName(name: String)
     	    fun go() {
     	        Log.e("NameCallBack", "NameCallBack")
     	    }
     	}
    
        abstract class Student : Base(), NameCallBack {
         override fun go() {
     
         }
     
         override fun loading() {
             super.loading()
         }
     
         override fun setName(name: String) {
             TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
         }
     
     
     }
    
Android第一行代码——快速入门 Kotlin 编程(2.5 面向对象编程) 对于初学 Kotlin 的人来讲,这对括号确实挺难理解的,也可能是 Kotlin 在这方面设计得太复杂了,因为它还涉及主构造函数、次构造函数等方面的知识,这里我尽量尝试用最简单易懂的讲述来让你理解这对括号的意义和作用,同时顺便学习 一下 Kotlin 中的主构造函数和次构造函数。其实原因就是这么简单,只是很多人在刚开始学习 Kotlin 的时候没能理解这对括号的意义和规则,因此总感觉继承的写法有时候要加上括号,有时候又不要加,搞得晕头转向的,而在你真正理解了规则之后,就会发现其实还是很好懂的。 阅读详情

相关推荐

【kotlin笔记03】kotlin之面向对象、构造函数、方法重写、类的继承、抽象类和接口、常见的几种类

kotlin中定义抽象类需要使用【abstract】关键字,抽象类不能实例化,需要被子类继承,kotlin中抽象类已经具备了【open】关键字的作用,所以不需要单独再使用【open】修饰,抽象类中可以没有抽象方法,但是具有抽象方法的类,一定是抽象类。接口使用【interface】关键字进行定义,某个类实现某个接口使用【冒号】,和kotlin中的继承使用的是相同的符号,所以kotlin中接口和继承是可以写在一起的,一个类可以实现多个接口,多个接口之间使用逗号分隔,一个接口可以继承另一个接口。

✅ Java 开发工程师 1831

Kotlin基础语法 十、接口与抽象类

一. 接口 1、 ) 接口的定义 ) 使用关键字 interface 来定义接口 )Kotlin 接口的方式可以是抽象的,也可以提供默认的实现(即方法体是可选的) )Kotlin接口的属性必须声明为抽象(不能初始化)或提供访问器实现。并且在接口中声明的属性不能有幕后字段(backing field),因此接口中声明的访问器不能引用field,var声明的可变变量的访问器依赖幕后字段。所以var属性只能是抽象的,val 属性 可以提供getter访问器 完整示例: interface MyInterfac

weixin_43864176的博客 1731

MMORPG网络游戏开发之任务系统的架构与设计

在网路游戏中做任务已经成为游戏很重要的一个核心功能和玩法,如何做好一个灵活可扩展的任务系统的架构与设计,今天来给大家分享一些我们的设计经验。接下来我把整个的任务系统分成以下6个模块:对于单机游戏而言,这6个模块都放在客户端直接处理,对于网路游戏而言,模块1~5实现在服务端,模块6实现在客户端。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习unity的零基础小白,也有一些正在从事unity开发的技术大佬,欢迎你来交流学习。...

voidinit的专栏 3049

Kotlin implements 的实现

上一遍博客写到kotlin 没有extends关键了,同样 kotlin中也没有 implements 关键字了, 我们要使用呢可以吧 implements 去掉 写一个 冒号:即可 先看看java的 例如我们监听用户输入字体变化的时候 然后我们 alt + enter 就是实现TextWatcher的方法了 在看看kotlin 中 这个逗号 是 多个几件...

小牧在一直在学习,在前进的道路上大家一起学习,进步。 8915

ROS新手必看:5分钟搞定URDF小车建模(附Rviz可视化调试技巧)

本文为ROS新手提供了快速构建URDF机器人模型的实战指南。通过一个完整的两轮差速小车建模案例,详细解析了URDF的核心语法、Rviz可视化调试技巧以及常见问题排查方法,帮助初学者快速掌握ROS机器人建模与可视化调试的核心技能。

weixin_29079643的博客 250

Cesium体渲染实战:从医学CT到气象数据的3D可视化全攻略

本文详细介绍了如何利用Cesium体渲染技术实现医学CT和气象数据的3D可视化。从数据预处理到交互式渲染,涵盖了DICOM和NetCDF格式的处理技巧,以及性能优化的实战策略,帮助开发者高效处理复杂的三维数据集。

weixin_28717431的博客 420

Kotlin 继承和实现

Kotlin 继承与实现。

Chanwing Chow的博客 1061

SOI LDMOS器件的Sentaurus TCAD建模与关键电学特性仿真研究

本文研究了SOI LDMOS器件的TCAD建模与电学特性仿真。通过Sentaurus TCAD平台建立了单RESURF结构的SOI LDMOS模型,详细阐述了器件结构原理和RESURF耐压机制。研究采用SDE进行几何定义和掺杂配置,在Sentaurus Device中构建了完整的物理模型体系,包括迁移率、复合和碰撞电离模型。通过系统仿真提取了器件的转移特性、输出特性和击穿特性等关键参数,分析了各参数对性能的影响规律。研究结果为功率半导体器件的仿真建模提供了规范化参考,有助于优化SOI LDMOS的性能设计。

huanghm88的专栏 134

Kotlin基础学习(八)—— 实现接口、继承父类

Kotlin入门学习

123 4583

华为OD新系统机试真题 - 获取大写字母瓷砖拼出独特图案数量

华为OD机试新系统真题【获取大写字母瓷砖拼出独特图案数量】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD新系统四月二十九号机试真题【获取大写字母瓷砖拼出独特图案数量】

qq_45776114的博客 1219

【工具插件类教学】Unity翻书效果插件Book-Page Curl Pro教程

特征: • 从左到右和从右到左翻页 • 与画布缩放器 配合使用 • 可配置的自动翻转脚本 • 支持向页面 添加 UI 元素 • 支持透明页面 • 适用于“世界空间”画布

纯技术流日常开发商业开发记录总结等 3676

kotlin学习总结(三)——类和对象、继承、接口和抽象类

这里写目录标题一、类和对象1.1 类的声明1.2 类的构造函数1.2.1 主构造函数1.2.2 init初始化块1.2.3 次构造函数1.2.4 注意点1.3 类的实例化1.4 Getter()与Setter()1.5 可见性修饰符1.6 编译时常数1.7 延迟初始化和惰性初始化1.7.1 延迟初始化1.7.2 惰性初始化 一、类和对象 1.1 类的声明 Kotlin 中使用关键字 class 声明类 class Invoice { /*……*/ } 类声明由类名、类头(指定其类型参数、主构造函数等)以及

weixin_44630656的博客 1893

基于Linux的PCIe设备驱动开发入门到精通-- 11.2 锁机制与并发控制 (自旋锁、互斥锁) 11.3 性能瓶颈分析与优化建议

本文探讨Linux驱动开发中的性能优化方法论,重点聚焦并发控制与性能瓶颈分析。从锁机制选择(自旋锁、互斥锁等)到工具使用(ftrace、perf),详细介绍了定位锁竞争和CPU热点的实战步骤,包括ftrace事件跟踪和perf火焰图分析。针对常见性能瓶颈(CPU/内存/I/O/锁竞争),提出了锁粒度优化、无锁结构替换、中断处理优化等解决方案。强调性能优化需要理论结合实践,通过"假设-测量-验证"的循环持续迭代。为开发者提供了一套从问题定位到解决的完整方法论,助力开发高性能工业级驱动。

MHD0815的博客 130

Kotlin学习(7)-类和对象之类的继承、接口

1.普通类 Kotlin如同Java一样也拥有一个超类——Any(Java是Object),Any提供了3个方法:equals()、hashCode()和toString()。Kotlin中的类默认都是不可以继承的,如果想要继承一个类则需要添加关键字"open"。 open class Fruit(var area: String = "上海") { //... } //父类Fruit已经在构造函数中声明了属性,子类就不需重复声明(不需要添加val/var) class Apple(area:

ITMonkeyKing的博客 286

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Kotlin学习(四)—— 类和对象,继承,覆盖,抽象类,属性和字段,接口,可见性修饰符,扩展

作者:刘某人程序员博客:http://blog.youkuaiyun.com/qq_26787115声明:未经原作者允许请勿转载一.类和对象1. 类Kotlin和java的类的声明都是一样的,用class表示,比如如果是空类的话,大括号都可以省了2.构造函数一个主构造函数和多个次要函数,主函数在类名后,如如果主构造函数没有任何注解或者可⻅性修饰符,可以省略这个 constructor 关键字。 并且主构造函数

刘桂林 460

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【Kotlin学习】类、对象和接口——定义类继承结构

学习于《Kotlin实战》,本文讲解了Kotlin中接口、访问修饰符、可见性修饰符、内部类和嵌套类与java的区别和使用,也讲述了Kotlin中新特性:密封类

PanicLin的博客 1633

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Kotlin类与对象完全指南:构造函数、继承、接口与嵌套类

在Kotlin函数系列的深入探索之后,我们现在转向面向对象编程的核心——类与对象。作为现代编程语言,Kotlin在保持与Java良好互操作性的同时,对传统的面向对象概念进行了现代化改进,提供了更简洁、更安全的语法和特性。Kotlin构造函数的完整体系与最佳实践继承机制的改进与open关键字的哲学接口实现与多继承冲突解决方案嵌套类与内部类的本质区别及应用场景kotlin// 最佳实践:使用主构造函数和默认参数。

2501_93078354的博客 597

Android修行手册之Kotlin-【类和对象】、【Get和Set】、【继承】、【接口】【抽象类/嵌套类/内部类】、【数据类】、【泛型】

我的军旗依然伫立在这里,你看到来吗,我的长枪依然锐利,只是不能再为你挥舞,于是我筑起来高墙,等待,等待,为你卸下的那一刻。 往期文章分享 点击跳转=>熬夜再战Android从青铜到王者-开发效率插件篇 点击跳转=>Unity粒子特效系列-龙卷风预制体做好了,unitypackage包直接用! 点击跳转=>姐姐喊我解锁套娃新技能:FairyGUI在Unity中实现List嵌套List/立体画廊等,玩出花儿来 点击跳转=>Unity新手必备5款宝藏插件–价值上千元白嫖最新版 爆肝万.

空名先生 6603

Kotlin学习(四)—— 类和对象,继承,覆盖,抽象类,属性和字段,接口,可见性修饰符,扩展...

一.类和对象 1. 类 Kotlin和java的类的声明都是一样的,用class表示,比如 class TestClass { } 如果是空类的话,大括号都可以省了 2.构造函数 一个主构造函数和多个次要函数,主函数在类名后,如 class TestClass { //主函数 class ...

weixin_33946605的博客 246

Kotlin学习之路(4) 定义类与对象

终于到了Kotlin的核心篇章了,Kotlin的定义类,以及对象 接口 抽象类等等,这些知识点在Java中也是至关重要的

Xia_燚的博客 810

Kotlin 类基础

kotlin是OOP模式的语言,其中的类是对事物的特征、逻辑的综合抽象,用关键词class声明一个类。包含class name, class header, class body。 class A {} class Empty 类的基本结构:构造函数,属性,方法 构造函数 构造函数是实例化一个类时调用的api,它可以接收参数来控制对象的特征与逻辑 构造函数可以用关键词constructor声明 kotlin的类有两种构造函数,主构造函数、次构造函数 主构造函数是class header的一部

ljjliujunjie123的博客 4406

Kotlin 指南之四:类和对象

Kotlin 指南之四:类和对象

wwtg9988的博客 1192

Kotlin 学习第四章,继承、接口、扩展

Kotlin 中所有类都继承该 Any 类,它是所有类的超类,对于没有超类型声明的类是默认超类: class Example // 从 Any 隐式继承 Any 默认提供了三个函数: equals() hashCode() toString() 注意:Any 不是 java.lang.Object。 如果一个类要被继承,可以使用 open 关键字进行修饰。 open class Base(p: Int) // 定义基类 class Derived(p: Int) : Base(p)

ElevenDGQ的博客 494
上一篇: Kotlin之表达式
下一篇: 什么是缓存?
jhonjson
博客等级 码龄11年 220粉丝 195原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值