1、面向对象
创建一个 bean 类
class Person(var name: String, var age: Int)
fun main() {
var person = Person("韩小呆", 20)
print("人的姓名:${person.name} 人的年龄:${person.age} ")
}
在这里 “class Person(var name: String, var age: Int)” 表示 Person 是含有两个参数 构造方法的类,在初始化该对象时候,需将参数传递进去
2、定义一个外部类
带参数构造方法的外部类
class Person(var name: String, var age: Int)
不含参 构造方法 外部类
class Person {
var name: String = ""
var age: Int = 0
}
声明方法 则正常声明即可
2、封装
private //仅自己 可以访问使用
protected //自己、子类、同包 可以访问
默认 // 自己、同包 可以访问
public //任何情况下都 可以访问
3、继承
父类定义方式:
open class Person {
var age: Int = 0
open fun like() {
println("异性朋友")
}
}
这里的 “open” 修饰 类时,表示允许被继承,修饰方法时 表示允许被子类 重写。
“open”关键字与“private”关键字不可以同时进行修饰
子类定义方式:
class Man : Person() {
override fun like() {
print("美女")
}
}
这里的 “class Man : Person()” 创建方式 表示 该类继承自 Person 类
“override ” 关键字表示重写 父类的 “like( )”方法
这里 就和 Java 语言不同了 父类声明的 时候 需要 加 “open” 关键字 ,而子类进行重写的时候 必须加 “override” 关键字
4、抽象类
定义抽象父类
abstract class Person( var name: String) {
abstract fun like()
}
继承抽象类的 子类
class Man(name: String) : Person(name) {
override fun like() {
print("$name like 美女")
}
}
测试类
fun main() {
var man = Man("小呆")
man.like()
}
5、接口
定义接口
interface Usb {
fun work()
}
定义抽象类
abstract class Device {
abstract fun doSomething()
}
实现接口 和 继承抽象类
class Computer : Device(), Usb {
override fun doSomething() {
println("play game")
}
override fun work() {
println("插入鼠标")
}
}
测试类
fun main() {
var computer = Computer()
computer.doSomething()
computer.work()
}
这里没有什么特别的 和 Java 的相关代码相同的
6、代理模式
定义公共接口
interface WashBow {
fun washing()
}
子类 1 实现 接口
class Son :WashBow{
override fun washing() {
println("儿子洗碗")
}
}
子类 2 实现接口 并且 将自己设置为代理类
class Father : WashBow by Son() {
override fun washing() {
println("爸爸看着儿子")
Son().washing()
}
}
测试类
fun main() {
var father = Father()
father.washing()
}
这里的 by 关键字 表示 子类 2 需要实现的 抽象方法 由 子类 1 进行实现
这个代码存在问题 代码内 包含 两个 子类1 对象
7、单例模式
公共接口
interface WashBow {
fun washing()
}
单例的子类 1
object Son : WashBow {
override fun washing() {
println("儿子洗碗")
}
}
子类 2
class Father : WashBow by Son {
override fun washing() {
println("爸爸看着儿子")
Son.washing()
}
}
测试类
fun main() {
var father = Father()
father.washing()
}
这里的 Object 声明 类 直接 该类转换为 单例类
8、密封类
通过 sealed 关键字进行修饰 class 导致其只能被内部继承,而外部类若要初始化该类,则必须通过内部子类进行初始化
闭包的代码
sealed class Father {
fun seyHello(){
println("你好!!!")
}
class SonOne : Father()
class SonTwo : Father()
}
测试类代码
fun main() {
var father: Father = Father.SonOne()
var fatherTwo: Father = Father.SonTwo()
father.seyHello()
fatherTwo.seyHello()
}
欢迎关注.jpg
网友评论