Kotlin类和对象

来源于:菜鸟教程

Kotlin类可以包含:构造函数和初始化代码块,函数,属性,内部类,对象声明。

Kotlin中使用关键字class声明类,后面紧跟类名:

class   Runoob {   //类似Java

}

但是Kotlin可以定义一个空类:

class Empty

类中定义成员函数:

    class Runoob()  {
             fun foo() {    print("Foo")}   //成员函数
}

类的属性

属性定义

类的属性可以用关键字var声明为可变的,否则使用关键字val 声明为不可变。

class   Runoob {

var  name :String =  "斗酒相逢"

    var   url :String =  "www.djxf.github.io"

     val   city   : String = "株洲"

}

我们可以使用普通函数那样使用构造函数创建类实例:

val   site =   Runoob()    //注意的是kotlin中没有new关键字

要使用一个属性,只要用名称引用它即可。

site.name  //使用.号来引用

site.url

Kotlin中的类中可以有一个主构造器,以及一个或多个构造器,主构造器是类头部的一部分,位于类名称之后:

class Person construtor(firstName : String)

{}

如果主构造器没有任何注解,也没有任何可见度修饰符,那么constructor关键字可以省略。

class  Person(firstName : String){}

getter 和  setter

如果属性类型可以从初始化语句或者类的成员函数中推断出来,那就可以省去类型,val不允许设置setter函数,因为它只是可读的。

实例:

Kotlin中类不能有字段。提供了Backing Fields(后端变量)机制,备用字段使用field关键字声明,field关键字只能用于属性的访问器,如以上实例。

非空属性必须在定义的时候初始化,kotlin提供了一种可以延迟化的方案,使用lateinit关键字属性:

    lateinit var subject : TestSubject

主构造器

主构造器中不能包含任何代码,初始化代码可放在初始化代码段中,初始化代码段使用init关键字init作为前缀。

    class Person constructor(fisrtName :  String)
     {
         init {
                println("FirstName is $firstName")
               }
    }

注意:主构造器的参数可以在初始化代码段中使用,也可以在类主体n定义的属性初始化代码中使用。一种简洁语法,可以通过主构造器来定义属性并初始化属性值(可以是var或val):

       class People (val firstName : String,  val lastName :  String){
                //...
}

如果构造器有注解,或者有可见度修饰符,这时constructor关键字是必须的,注解和修饰符要放在它之前。

实例:

次构造函数

类也可以有二级构造函数,需要加前缀constructor.

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

如果一个非抽象类没有声明构造函数(主或次构造函数),它会产生一个没有参数的构造函数。构造函数是public。如果你不想你的类有公共的构造函数,你就得声明一个空的主构造函数:

    class DontCreateMe  private constructor(){

}

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

    class Customer (val customerName : String = "")

实例:

抽象类

抽象是面向对象的特征之一,类本身,或类中的部分成员,都可以声明abstract的。抽象成员在类中不存在具体的实现。

注意:无需对抽象类或抽象成员标注open注解。

嵌套类

我们可以把类嵌套在其他类中,看一下实例:

内部类

内部类使用inner关键字来表示。

内部类会有一个对外部类的对象的引用,所有内部类可以访问外部类成员属性和成员函数。

为了消除歧义,要访问外部作用域的this,我们使用[email protected],其中@label是一个代指this来源的标签。

匿名内部类

使用对象表达式来创建匿名内部类:

类的修饰符

类的修饰符包括classModifier 和 _accessModifier:

*classModifier:类属性修饰符,标示类本身特性。

accessModifier:访问权限修饰符

原文地址:https://www.cnblogs.com/djxf/p/10133207.html

时间: 2024-10-15 04:01:08

Kotlin类和对象的相关文章

Kotlin 类和对象

类定义 Kotlin 类可以包含:构造函数和初始化代码块.函数.属性.内部类.对象声明. Kotlin 中使用关键字 class 声明类,后面紧跟类名: class Runoob { // 类名为 Runoob // 大括号内是类体构成 } 我们也可以定义一个空类: class Empty 可以在类中定义成员函数: class Runoob() { fun foo() { print("Foo") } // 成员函数 } 类的属性 属性定义 类的属性可以用关键字 var 声明为可变的,

Kotlin基础(三)类、对象和接口

类.对象和接口 一.定义类的继承结构 一)Kotlin中的接口 Kotlin的接口与Java8中相似,它们可以包含抽象方法的定义以及非抽象方法的实现,但它们不能包含任何状态. 1 interface Clickable{ 2 fun click() 3 fun showoff()=println("It's show time!") 4 } 5 6 interface Focusable{ 7 fun setFocus(b: Boolean)= 8 println("I ${

类、对象和接口

1.定义类继承结构 1.1 kotlin中的接口 声明接口 interface Clickable{ fun click() } 声明了一个只有一个抽象方法的接口,和java中一样,实现这个接口的类要提供这个抽象方法的具体实现. 实现接口 class Button:Clickable{ override fun click()=println("I was clicked")//override修饰符是强制要求的 } 在kotlin中":"相当于java中的exte

Java 第七章 类和对象 笔记

一.对象的特征--类的属性 每个对象的每个属性都有特定的值 对象的操作--类的方法 二.封装:对象同时具有属性和方法两项特性.     对象的属性和方法通常被封装在一起,共同体现事物的特性,     二者相辅相成,不能分割. 三.类和对象的区别:     类:抽象的概念,是一个模子,确定了对象的属性和方法.    对象:能够看得见摸得着的实物.具有静态和动态特征. 四.定义类的步骤:     1.定义类名      2.定义类的属性 访问修饰符 属性类型 属性名称=默认值:     3.定义类的

类与对象

1.1 类和对象的关系   为什么要采用面向对象思想进行程序设计与开发 1.可以实现代码的复用 2.符合人思考的方式   类和对象的定义 1.类的定义:用class关键修饰的叫做类 2.对象的定义:类名定义的数据类型   类和对象之间关系 1.由对象归纳为类,是归纳对象共性的过程 2.在类的基础上,将状态和行为实体化为对象的过程为实例化   1.2 定义类   定义类的语法,类主要由成员变量和成员方法构成(暂不提构造函数) eg: publicclassStudent { //成员变量 intn

【编程语言】Java中的类和对象learn by Imooc

 一.什么是类和对象 * 类是模子,确定对象将会拥有的特征(属性)和方法 * 类的特点: *     类是对象的类型 *     具有相同属性和方法的一组对象的集合 * 对象的属性 *     属性-对象具有的各种特征 *     每个对象的每个属性都有用的特定值 * 对象的方法 *     方法-对象执行的操作(能干什么) * 类和对象的关系 *     类是抽象的概念,仅仅是模板 *     对象是一个你能够看得到,摸得着的具体实体 二. 如何定义Java的类 * 1.类的重要性:所有Jav

C++ 成员变量是别的类的对象

?在成员函数中,可以将this指针当参数传递,也可以返回this指针,或返回通过this指针拿到的对象 /* 成员变量是别的类的对象 */ #include <iostream> using namespace std; //日期类 class Date { int year,month,day; public: //构造方法 Date(){ cout << "Date() " << endl; } //有参 Date(int _y,int _m,i

l类与对象课后作业

java 的初始化规律 执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”. 执行类的构造函数. 类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行.因此,适合于封装那些“对象创建时必须执行的代码” 当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行. 请自行编写示例代码验证以上结论. public class InitializeBlockDemo { /**   * @param args   */ public static vo

第五节 类和对象

面向对象怎么理解? 1.1 面向对象是相对面向过程而言 1.2 面向对象和面向过程都是一种思想 1.3 面向过程:强调的是功能行为 1.4 面向对象:将功能封装进对象,强调具备了功能的对象 1.5 面向对象是基于面向过程的 特点: 三个特征:封装.继承.多态 我们在开发过程中,就是在找对象进行使用,没有对象就new一个对象. 找对象:建立对象,使用对象,维护对象的关系 封装: (1)是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. (2)好处:将变化隔离:便于使用:提供重用性:提高安全性