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学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
随机推荐
- Apache+php+mysql+phpadmin搭建
一,准备工具. httpd-2.4.12-win32-VC9.zip php-5.4.40-Win32-VC9-x86.zip phpMyAdmin-4.2.13.2-all-languages my ...
- sqm(sqlmapGUI) pcat修改版
sqlmap是一款开源的注入工具,支持几乎所有的数据库,支持get/post/cookie注入,支持错误回显注入/盲注,还有其他多种注入方法. 支持代理,指纹识别技术判断数据库 .而sqm(sqlma ...
- (3)选择元素——(2)文档对象模型(The Document Object Model)
One of the most powerful aspects of jQuery is its ability to make selecting elements in the DOM easy ...
- 为了肾六(dp)
为了肾六 时间限制:4000 ms | 内存限制:210535 KB 难度:2 描述 最近肾六很流行,goshawk看身边的朋友都用上了apple.自己还用着W年前的Samsung.于是决定去 ...
- ceph增加osd流程
假如需要新增一个主机名:osd4 ip:192.168.0.110的OSD1.在osd4创建挂载目录及放置配置文件的目录 ssh 192.168.0.110 (这里是从mon主机ssh到osd4主机) ...
- JS,Jquery - 三元运算符
在javascript中使用三元运算符. 要使用 " [] " ,对运算式进行包裹.
- iOS开发之理解iOS中的MVC设计模式
模型-视图-控制器(Model-View-Controller,MVC)是Xerox PARC在20世纪80年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已广泛应用于用户交互应用程 ...
- B - 最大报销额
注意超时问题,一个题可能有很多种方法解决,但是想到解决方法的同时一定要考虑这个方法的复杂度,特别是对于acm的题,有可能出现超时的情况,很浪费时间 正式比赛中就很遗憾,血的教训. 下面贴上超时的代码并 ...
- java的数据类型,几个java小程序
1:求圆的面积 还好看了c++,不然直接看这课件还真是看不懂……加油吧 要从键盘读入数据可以用Scanner类的nextlnt()或者nextDouble()方法,首先创建Scanner类的一个实例, ...
- lodop 打印控件的使用
先看效果图 : lodop插件 需要安装 打印浏览效果: 实现打印的前提条件 去官网下载几个js包 : http://www.lodop.net/download.html 添加到项目中 图片如下: ...