• 面向对象(一)


    1. 面向对象
      1.1 矩形例子

    1. //矩形 宽 高
    2. class Rect(var width:Int, var height:Int)
    3. fun main(array: Array<String>){
    4. var rect = Rect(10,20)
    5. println("矩形的高度: ${rect.height}")
    6. println("矩形的宽度: ${rect.width}")
    7. }

      1.2 Girl例子

    1. //Girl
    2. class Girl(var chactor:String, var voice: String)
    3. fun main(args: Array<String>){
    4. var girl1 = Girl("外向","甜美")
    5. println("gril 的声音 ${girl1.voice}")
    6. }

    2. 面向对象 静态和动态
      2.1 创建Girl类

    1. class Girl(var chactor:String, var voice: String){
    2. fun smile(){
    3. println("微笑")
    4. }
    5. fun cry(){
    6. println("伤心")
    7. }
    8. }

      2.2 测试方法

    1. fun main(args: Array<String>){
    2. var girl1 = Girl("外向","甜美")
    3. println("gril 的声音 ${girl1.voice}")
    4. girl1.smile()
    5. girl1.cry()
    6. }

    3. 面向对象创造者与使用者洗衣机案例
      3.1 创建洗衣机类

    1. /**
    2. * 创建的洗衣机
    3. */
    4. class WashMachine(var module: String, var size: Int) {
    5. var isDoorOpen = true
    6. var currentMode = 0
    7. fun openDoor() {
    8. println("洗衣机的门打开")
    9. isDoorOpen = true
    10. }
    11. fun closeDoor() {
    12. println("洗衣机的门关闭")
    13. isDoorOpen = false
    14. }
    15. fun selectMode(mode: Int) {
    16. currentMode = mode
    17. when (mode) {
    18. 0 -> println("标准模式")
    19. 1 -> println("轻柔")
    20. 2 -> println("重洗")
    21. else -> println("其他模式")
    22. }
    23. }
    24. fun start() {
    25. if (isDoorOpen) {
    26. println("门还满关")
    27. return
    28. }
    29. when (currentMode) {
    30. 0 -> {
    31. println("放水...")
    32. println("水放满了...")
    33. println("电机开始转...")
    34. setMotorSpeed(600)
    35. println("洗好了...")
    36. }
    37. 1 -> {
    38. println("放水...")
    39. println("水放满了...")
    40. println("电机开始转...")
    41. println("轻柔开始")
    42. setMotorSpeed(100)
    43. println("洗好了...")
    44. }
    45. 2 -> {
    46. println("放水...")
    47. println("水放满了...")
    48. println("电机开始转...")
    49. println("重洗开始")
    50. setMotorSpeed(1000)
    51. println("洗好了...")
    52. }
    53. else -> {
    54. println("选择模式错误!")
    55. }
    56. }
    57. }
    58. private fun setMotorSpeed(speed: Int) {
    59. println("当前发动机转速为 $speed 圈/秒")
    60. }
    61. }

      3.2 使用者调用

    1. /**
    2. * 洗衣服
    3. */
    4. fun main(args: Array<String>) {
    5. var washMachine = WashMachine("小天鹅", 12)
    6. washMachine.openDoor()
    7. washMachine.closeDoor()
    8. washMachine.selectMode(2)
    9. washMachine.start()
    10. }

    4. 面向对象继承
      4.1 父类

    1. /**
    2. * 父类
    3. */
    4. open class Father {
    5. var character = "内向"
    6. open fun action(){
    7. println("公共场合大声喧哗")
    8. }
    9. }

      4.2 字类,子类继承父类的类或者方法,必须用 open 关键字修饰

    1. /**
    2. * 子类
    3. */
    4. class Son : Father() {
    5. override fun action() {
    6. println("很乖,在公共场合很有礼貌")
    7. }
    8. }

      4.3 测试方法

    1. fun main(args: Array<String>){
    2. var son1 = Son()
    3. println("son 的性格 ${son1.character}")
    4. son1.action()
    5. }

    5. 抽象类和多态
      5. 1 抽象类
       5.1.1 定义抽象类

    1. /**
    2. * 抽象的人 类
    3. */
    4. abstract class HuMan(var name: String){
    5. abstract fun eat()
    6. }

       5.1.2 实现抽象类 Man

    1. class Man(name: String):HuMan(name) {
    2. override fun eat() {
    3. println("$name 大口的吃")
    4. }
    5. }

       5.1.3 实现抽象类 Woman

    1. class Woman(name: String): HuMan(name) {
    2. override fun eat() {
    3. println("$name 小口的吃")
    4. }
    5. }

       5.1.4 测试调用

    1. fun main(args: Array<String>) {
    2. var person1 = Man("小明明")
    3. person1.eat()
    4. var person2 = Woman("小红红")
    5. person2.eat()
    6. }

      5.2 多态:同种功能,不同表现的形态
       5.2.1 创建出现的类

    1. /**
    2. * 抽象的人类
    3. */
    4. abstract class HuMan(var name: String){
    5. abstract fun eat()
    6. abstract fun pee()
    7. }

       5.2.2 实现抽象类 Man

    1. class Man(name: String):HuMan(name) {
    2. override fun eat() {
    3. println("$name 大口的吃")
    4. }
    5. override fun pee() {
    6. println("$name 站着")
    7. }
    8. }

       5.2.3 实现抽象类 Woman

    1. class Woman(name: String): HuMan(name) {
    2. override fun eat() {
    3. println("$name 小口的吃")
    4. }
    5. override fun pee() {
    6. println("$name 蹲着")
    7. }
    8. }

       5.2.4 测试方法

    1. fun demo2() {
    2. var person1 = Man("小明明")
    3. var person2 = Woman("小红红")
    4. var person3 = Man("小华华")
    5. var person4 = Woman("小沙沙")
    6. var person5 = Man("小贝贝")
    7. //请一些人到一个集合里面
    8. var hoseList = listOf(person1, person2, person3, person4, person5)
    9. for (h in hoseList){
    10. h.pee()
    11. }
    12. }

  • 相关阅读:
    揭秘百度智能测试在测试分析领域实践
    【Android面试八股文】如何实现Activity窗口快速变暗
    基于Simulink的用于电力系统动态分析
    数据链路层:封装成帧
    图论---图的遍历
    MySQL高手炼成记:29+超实用监控与优化技巧,你的数据库够快吗?
    做SEO为什么有的网站收录很难做?
    AJAX学习笔记2发送Post请求
    sprint tool suite启动tomcat
    【Leetcode】2427. Number of Common Factors
  • 原文地址:https://blog.csdn.net/u011193452/article/details/126103154