Swift学习笔记十三:继承
一个类能够继承(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学习笔记十三:继承的更多相关文章
- swift学习笔记之-继承
//继承 import UIKit /* 继承(Inheritance): 1.一个类可以继承(inherit)另一个类的方法(methods).属性(properties)和其它特性.当一个类继承其 ...
- Swift学习笔记十三
初始化 初始化是一个在类.结构体或枚举的实例对象创建之前,对它进行预处理的过程,包括给那个对象的每一个存储式属性设定初始值,以及进行一些其他的准备操作. 通过定义初始化器(initializer)来实 ...
- 【swift学习笔记】二.页面转跳数据回传
上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...
- python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容
python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI,采用Python语言编写 ...
- java之jvm学习笔记十三(jvm基本结构)
java之jvm学习笔记十三(jvm基本结构) 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成 ...
- Swift学习笔记(一)搭配环境以及代码运行成功
原文:Swift学习笔记(一)搭配环境以及代码运行成功 1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.能够开发ios,mac相关的app哦!是苹 ...
- c++学习笔记之继承篇
title: c++学习笔记之继承篇 date: 2017-03-26 16:36:33 tags: [c++,继承,public,virtual,private,protected] categor ...
- Go语言学习笔记十三: Map集合
Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. ...
- swift学习笔记4——扩展、协议
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
随机推荐
- 驱动: i2c驱动 >>>>
1. IIC协议: <<um_s3c2440a_rev10.pdf>> p481 Figure 20-3. IIC-Bus Interface Data Format< ...
- WRTnode 的 HTTP Web 开关实验(2016-05-16)
前言 这里是节取自 物联网的任意门——WRTnode2R 评测 中的 http web 开关灯实验,所以有一些前置设置如果没有描述清楚可参考该处. 正文 步骤一:编辑一个 html 文件,放在 /ww ...
- 「OC」 多态
一.基本概念 多态在代码中的体现,即为某一类事物的多种形态,OC对象具有多态性.必须要有继承,没有继承就没有多态. 在使用多态时,会进行动态检测,以调用真实的对象方法. 多态在代码中的体现即父类指针指 ...
- jQuery.form 中的 ajaxForm() 和 ajaxSubmit()
官方例子 http://malsup.com/jquery/form/#ajaxForm官方API http://malsup.com/jquery/form/#api中文API http: ...
- 转: seajs知识点与cmd规范
在比较之前,我们得先来了解下什么是AMD规范?什么是CMD规范?当然先申明一下,我个人也是总结下而已,也是网上看到的资料,自己总结下或者可以说整理下而已,供大家更深入的了解!因为我们都知道 AMD规范 ...
- BZOJ 1677: [Usaco2005 Jan]Sumsets 求和
题目 1677: [Usaco2005 Jan]Sumsets 求和 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 617 Solved: 344[Su ...
- java学习之线程池的实现
package com.gh.threadpoor; import java.util.concurrent.ExecutorService; import java.util.concurrent. ...
- Eclipse中设置tomcat的启动内存
现象:眼下每次使用Eclipse启动Tomcat 的时候常常出现OutOfMemoryError thrown from the UncaughtExceptionHandler in thread ...
- [Swust OJ 352]--合并果子(贪心+队列模拟)
题目链接:http://acm.swust.edu.cn/problem/352/ Time limit(ms): 1000 Memory limit(kb): 65535 Description ...
- django-debug-toolbar
一:安装django-debug-toolbar. 二:在settings里的MIDDLEWARE_CLASSES加入'debug_toolbar.middleware.DebugToolbarMid ...