kotlin学习笔记(二)

面向对象编程

类与对象

定义一个Person类并将其实例化。

class Person {
    var name = ""
    var age = 0
    fun eat(){
        println(name + " is eating. He is " + age + " years old.")
    }
}
fun main(){
    val p = Person()//kotlin实例化对象省去了关键词new
    p.name = "Tom"
    p.age = 18
    p.eat()
}

在这里插入图片描述

继承与构造函数

首先有一点要清楚,kotlin中要想父类可以继承,要在前面加上关键字open,这一点和Java不同。
第二点,继承的关键字是 ,写法如下:

class Student:Person(){
    var sno = ""
    var grade = 0
}

因为Java和kotlin在继承中都规定子类的构造函数都必须调用父类的构造函数,所以kotlin在继承时通过父类的括号来指定调用哪一个构造函数。(Person的括号为空说明现在调用的是无参构造函数)
kotlin将构造函数分为主构造函数和次构造函数,主构造函数和Java中的一样,函数名和类名相同;次构造函数则需要用关键字constructor实现。次构造函数必须调用主构造函数(包括间接调用)。

接口

第一,若实现接口的同时还有其他父类要继承,则统一使用冒号,中间使用都好分开,而且接口的后面不用加括号:

interface Study {
    fun readBook()
    fun doHomework()
}
class Student:Person(),Study{
    var sno = ""
    var grade = 0
    override fun readBook() {
        println(name +" is reading.")
    }

    override fun doHomework() {
        println(name + " is doing homework")
    }
}
fun main(){
    val student = Student()
    student.name = "Tom"
    student.age = 18
    doStudy(student)
}
fun doStudy(study: Study){
    study.readBook()
    study.doHomework()
}

第二,kotlin还允许对接口中定义的函数默认实现:

interface Study {
    fun readBook()
    fun doHomework(){
        println("do homework default implementation")
    }
}

函数修饰符

Java中对函数有四种修饰符,分别是:publicprivateprotecteddefault
kotlin中也有四种修饰符,分别是:publicprivateprotecteddefault
区别:

修饰符JavaKotlin
public所有类可见所有类可见(默认)
private当前类可见当前类可见
protected当前类、子类、同一包路径下的类可见当前类、子类可见
default同一包路径下的类可见(默认)
internal同一模块中的类可见
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值