一个类能够继承(inherit)还有一个类的方法(methods),属性(property)和其他特性

一、基本的语法

class Human{
var name :String
init(){
name = "human"
println(name)
}
func description(){
println("name:\(name)")
}
}
class Student:Human{
var score = 0
init(){
super.init()
name = "Student"
println(name)
}
override func description(){
super.description()
println("score:\(score)")
}
}

重点:

     ① 和Objective-C一样,继承一个类就是在定义的时候将父类名写在后面class Student:Human

     ② 继承类之后。会继承父类的全部属性和方法。要想重写父类的方法和属性,须要使用overridekeyword

     ③ 对于init()方法,重写不须要使用override 

     ④ 訪问父类的方法须要使用keywordsuper,如:super.description()



二、重写属性和加入观察器

class Human{
var name :String
init(){
name = "human"
}
func description(){
println(name)
}
}
class Student:Human{
override var name:String{
willSet{
println("will set \(newValue)")
}
}
override func description()
{
println("Student name:\(name)")
}
}
var a = Student()
a.name = "小笨狼" //输出:will set 小笨狼
a.description() //输出:Student name:小笨狼

重点:

     ① 对于类的属性,也能够重写

     ② 重写属性时能够加入观察器

     ③ 不能为常量储存属性和仅仅读计算属性加入观察器,由于他们都是不可改变的



三、防止继承或重写

     假设不想让某个类被继承,或者不想让某个属性或方法被重写。能够使用finalkeyword

@final class Human{ //① 在class前加@final。此类将不可被继承
@final var name :String //② 在属性前加@final。属性将不可被重写
init(){
name = "human"
}
@final func description(){ //③ 在方法前加@final,方法将不可被重写
println(name)
}
}

重点:

     ① 在class前加@final,此类将不可被继承。否则编译器会报错

            ② 在属性前加@final。属性将不可被重写,否则编译器会报错

     ③ 在方法前加@final,方法将不可被重写,否则编译器会报错

Swift学习笔记十三:继承的更多相关文章

  1. swift学习笔记之-继承

    //继承 import UIKit /* 继承(Inheritance): 1.一个类可以继承(inherit)另一个类的方法(methods).属性(properties)和其它特性.当一个类继承其 ...

  2. Swift学习笔记十三

    初始化 初始化是一个在类.结构体或枚举的实例对象创建之前,对它进行预处理的过程,包括给那个对象的每一个存储式属性设定初始值,以及进行一些其他的准备操作. 通过定义初始化器(initializer)来实 ...

  3. 【swift学习笔记】二.页面转跳数据回传

    上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...

  4. python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容

    python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI,采用Python语言编写 ...

  5. java之jvm学习笔记十三(jvm基本结构)

    java之jvm学习笔记十三(jvm基本结构) 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成 ...

  6. Swift学习笔记(一)搭配环境以及代码运行成功

    原文:Swift学习笔记(一)搭配环境以及代码运行成功 1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.能够开发ios,mac相关的app哦!是苹 ...

  7. c++学习笔记之继承篇

    title: c++学习笔记之继承篇 date: 2017-03-26 16:36:33 tags: [c++,继承,public,virtual,private,protected] categor ...

  8. Go语言学习笔记十三: Map集合

    Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. ...

  9. swift学习笔记4——扩展、协议

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

随机推荐

  1. 驱动: i2c驱动 >>>>

    1. IIC协议: <<um_s3c2440a_rev10.pdf>>  p481 Figure 20-3. IIC-Bus Interface Data Format< ...

  2. WRTnode 的 HTTP Web 开关实验(2016-05-16)

    前言 这里是节取自 物联网的任意门——WRTnode2R 评测 中的 http web 开关灯实验,所以有一些前置设置如果没有描述清楚可参考该处. 正文 步骤一:编辑一个 html 文件,放在 /ww ...

  3. 「OC」 多态

    一.基本概念 多态在代码中的体现,即为某一类事物的多种形态,OC对象具有多态性.必须要有继承,没有继承就没有多态. 在使用多态时,会进行动态检测,以调用真实的对象方法. 多态在代码中的体现即父类指针指 ...

  4. jQuery.form 中的 ajaxForm() 和 ajaxSubmit()

    官方例子  http://malsup.com/jquery/form/#ajaxForm官方API   http://malsup.com/jquery/form/#api中文API   http: ...

  5. 转: seajs知识点与cmd规范

    在比较之前,我们得先来了解下什么是AMD规范?什么是CMD规范?当然先申明一下,我个人也是总结下而已,也是网上看到的资料,自己总结下或者可以说整理下而已,供大家更深入的了解!因为我们都知道 AMD规范 ...

  6. BZOJ 1677: [Usaco2005 Jan]Sumsets 求和

    题目 1677: [Usaco2005 Jan]Sumsets 求和 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 617  Solved: 344[Su ...

  7. java学习之线程池的实现

    package com.gh.threadpoor; import java.util.concurrent.ExecutorService; import java.util.concurrent. ...

  8. Eclipse中设置tomcat的启动内存

    现象:眼下每次使用Eclipse启动Tomcat 的时候常常出现OutOfMemoryError thrown from the UncaughtExceptionHandler in thread ...

  9. [Swust OJ 352]--合并果子(贪心+队列模拟)

    题目链接:http://acm.swust.edu.cn/problem/352/ Time limit(ms): 1000 Memory limit(kb): 65535   Description ...

  10. django-debug-toolbar

    一:安装django-debug-toolbar. 二:在settings里的MIDDLEWARE_CLASSES加入'debug_toolbar.middleware.DebugToolbarMid ...