zoukankan      html  css  js  c++  java
  • 《从零开始学Swift》学习笔记(Day 41)——类的继承

    原创文章,欢迎转载。转载请注明:关东升的博客 

    Swift中的继承只能发生在类上,不能发生在枚举和结构体上。一个类可以继承另一个类的方法、属性、下标等特征,当一个类继承其他类时,继承类叫子类,被继承类叫父类(或超类)。子类继承父类后,可以重写父类的方法、属性、下标等特征。 

    为了了解继承性,看这样一个场景:一位面向对象的程序员小赵,在编程过程中需要描述和处理个人信息,于是他定义了类Person,如下所示:

    class Person {
    
        var name: String
    
        var age: Int   
    
        func description() -> String {
    
            return "(name) 年龄是: (age)"
    
        }
    
        init () {
    
            name = ""
    
            age  = 1
    
        }
    
    }

    一周以后,小赵又遇到了新的需求,需要描述和处理学生信息,于是他又定义了一个新的类Student,如下所示:

     

    class Student {
    
        var name: String
    
        var age: Int
    
     
    
        var school: String
    
       
    
        func description() -> String {
    
            return "(name) 年龄是: (age)"
    
        }
    
        init() {
    
            school = ""
    
            name = ""
    
            age  = 8
    
        }
    
    }

    很多人会认为小赵的做法能够理解并相信这是可行的,但是问题在于Student和Person两个类的结构太接近了,后者只比前者多了一个属性school,却要重复定义其他所有的内容,实在让人“不甘心”。Swift提供了解决类似问题的机制,那就是类的继承,代码如下所示:

    class Student: Person {
    
        var school: String
    
        override init() {
    
            school = ""
    
            super.init()
    
            age  = 8
    
        }
    
    }

    Student类继承了Person类中的所有特征,“:”之后的Person类是父类。Swift中的类可以没有父类,例如Person类,定义的时候后面没有“:”,这种没有父类的就是基类。

    此外override init()是子类重写父类构造函数。

    一般情况下,一个子类只能继承一个父类,这称为单继承,但有的情况下一个子类可以有多个不同的父类,这称为多重继承。在Swift中,类的继承只能是单继承。多重继承可以通过遵从多个协议实现。也就是说,在Swift中,一个类只能继承一个父类,但是可以遵循多个协议。

     

    欢迎关注关东升新浪微博@tony_关东升。
    关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
                              ​
    更多精品iOS、Cocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com
    智捷课堂论坛网站:http://51work6.com/forum.php

     

  • 相关阅读:
    Docker Warning : the backing xfs filesystem is formatted without d_type support
    docker 版本变化及说明
    CORS 跨域请求
    nginx 用户登录认证
    PipelineDB On Kafka
    Postgres 主从配置(五)
    exec() has been disabled for security reasons
    invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"
    未连接到互联网
    github管理代码
  • 原文地址:https://www.cnblogs.com/iOS-Blog/p/5000059.html
Copyright © 2011-2022 走看看