1. 面向对象
1.1 矩形例子
- //矩形 宽 高
- class Rect(var width:Int, var height:Int)
-
- fun main(array: Array<String>){
- var rect = Rect(10,20)
- println("矩形的高度: ${rect.height}")
- println("矩形的宽度: ${rect.width}")
- }
1.2 Girl例子
- //Girl
- class Girl(var chactor:String, var voice: String)
-
- fun main(args: Array<String>){
- var girl1 = Girl("外向","甜美")
- println("gril 的声音 ${girl1.voice}")
- }
2. 面向对象 静态和动态
2.1 创建Girl类
- class Girl(var chactor:String, var voice: String){
- fun smile(){
- println("微笑")
- }
- fun cry(){
- println("伤心")
- }
- }
2.2 测试方法
- fun main(args: Array<String>){
- var girl1 = Girl("外向","甜美")
- println("gril 的声音 ${girl1.voice}")
- girl1.smile()
- girl1.cry()
- }
3. 面向对象创造者与使用者洗衣机案例
3.1 创建洗衣机类
- /**
- * 创建的洗衣机
- */
- class WashMachine(var module: String, var size: Int) {
- var isDoorOpen = true
- var currentMode = 0
- fun openDoor() {
- println("洗衣机的门打开")
- isDoorOpen = true
- }
-
- fun closeDoor() {
- println("洗衣机的门关闭")
- isDoorOpen = false
- }
-
- fun selectMode(mode: Int) {
- currentMode = mode
- when (mode) {
- 0 -> println("标准模式")
- 1 -> println("轻柔")
- 2 -> println("重洗")
- else -> println("其他模式")
- }
- }
-
- fun start() {
- if (isDoorOpen) {
- println("门还满关")
- return
- }
-
- when (currentMode) {
- 0 -> {
- println("放水...")
- println("水放满了...")
- println("电机开始转...")
- setMotorSpeed(600)
- println("洗好了...")
- }
- 1 -> {
- println("放水...")
- println("水放满了...")
- println("电机开始转...")
- println("轻柔开始")
- setMotorSpeed(100)
- println("洗好了...")
- }
- 2 -> {
- println("放水...")
- println("水放满了...")
- println("电机开始转...")
- println("重洗开始")
- setMotorSpeed(1000)
- println("洗好了...")
- }
- else -> {
- println("选择模式错误!")
- }
- }
- }
-
- private fun setMotorSpeed(speed: Int) {
- println("当前发动机转速为 $speed 圈/秒")
- }
- }
3.2 使用者调用
- /**
- * 洗衣服
- */
- fun main(args: Array<String>) {
- var washMachine = WashMachine("小天鹅", 12)
- washMachine.openDoor()
- washMachine.closeDoor()
- washMachine.selectMode(2)
- washMachine.start()
- }
4. 面向对象继承
4.1 父类
- /**
- * 父类
- */
- open class Father {
- var character = "内向"
- open fun action(){
- println("公共场合大声喧哗")
- }
- }
4.2 字类,子类继承父类的类或者方法,必须用 open 关键字修饰
- /**
- * 子类
- */
- class Son : Father() {
- override fun action() {
- println("很乖,在公共场合很有礼貌")
- }
- }
4.3 测试方法
- fun main(args: Array<String>){
- var son1 = Son()
- println("son 的性格 ${son1.character}")
- son1.action()
- }
5. 抽象类和多态
5. 1 抽象类
5.1.1 定义抽象类
- /**
- * 抽象的人 类
- */
- abstract class HuMan(var name: String){
- abstract fun eat()
- }
5.1.2 实现抽象类 Man
- class Man(name: String):HuMan(name) {
- override fun eat() {
- println("$name 大口的吃")
- }
- }
5.1.3 实现抽象类 Woman
- class Woman(name: String): HuMan(name) {
- override fun eat() {
- println("$name 小口的吃")
- }
- }
5.1.4 测试调用
- fun main(args: Array<String>) {
- var person1 = Man("小明明")
- person1.eat()
-
- var person2 = Woman("小红红")
- person2.eat()
- }
5.2 多态:同种功能,不同表现的形态
5.2.1 创建出现的类
- /**
- * 抽象的人类
- */
- abstract class HuMan(var name: String){
- abstract fun eat()
- abstract fun pee()
- }
5.2.2 实现抽象类 Man
- class Man(name: String):HuMan(name) {
- override fun eat() {
- println("$name 大口的吃")
- }
-
- override fun pee() {
- println("$name 站着")
- }
- }
5.2.3 实现抽象类 Woman
- class Woman(name: String): HuMan(name) {
- override fun eat() {
- println("$name 小口的吃")
- }
-
- override fun pee() {
- println("$name 蹲着")
- }
- }
5.2.4 测试方法
- fun demo2() {
- var person1 = Man("小明明")
- var person2 = Woman("小红红")
- var person3 = Man("小华华")
- var person4 = Woman("小沙沙")
- var person5 = Man("小贝贝")
- //请一些人到一个集合里面
- var hoseList = listOf
(person1, person2, person3, person4, person5) - for (h in hoseList){
- h.pee()
- }
- }