Swift中构造器的继承和重写
import Foundation /*
构造器的继承:
Swift的子类不会自动继承父类的构造器, 若继承, 则满足如下规则:
1.如果子类没有提供任何指定构造器, 那么它将自动继承父类的所有指定构造器
2.如果子类实现了父类所有的指定构造器, 无论如何实现的, 都将自动继承父类的所有便利构造器
*/ /*
构造器的重写:
1.子类构造器重写了父类的指定构造器, 必须添加override修饰符
2.子类中定义的构造器只是和父类中便利构造器的形参列表, 外部形参名相同, 不算重写
*/ /*
总结:
1.如果一个子类没有定义任何构造器, 那么它将自动继承父类中的所有构造器
2.如果一个子类重写父类的所有指定构造器, 那么它将自动继承父类中的所有便利构造器
3.如果一个子类中任意的构造器和父类的便利构造器一模一样, 不算重写, 创建对象的时候也只会显示子类定义的构造器
*/ class Person { var name: String!
var weight: Double init(name: String) {
self.name = name
self.weight = 0.0
} // 定义指定构造器
init(name: String, weight: Double) {
self.name = name
self.weight = weight
} // 定义便利构造器(使用convenience修饰)
convenience init(n name: String, w weight: Double) {
// 便利构造器必须调用同类中的指定构造器
self.init(name: name, weight: weight)
} convenience init(showStr: String) {
self.init(name: "", weight: 0.0)
print(showStr)
}
} class Man: Person { var sex: String = "男" override init(name: String) {
// 子类的指定构造器中必须调用父类的指定构造器
super.init(name: name)
self.name = name
self.weight = 0.0
} override init(name: String, weight: Double) {
super.init(name: name, weight: weight)
self.name = name
self.weight = weight
} // 定义指定构造器与父类的便利构造器一样, 这里不算重写
convenience init(showStr: String) {
self.init(name: "", weight: 0.0)
print(showStr)
}
} var man = Man(name: "Rinpe", weight: 62.0)
var man1 = Man(showStr: "HelloWorld")
Swift中构造器的继承和重写的更多相关文章
- 《Swift Programming Language 》——Swift中怎样使用继承(Inheritance)
一个类能够继承(inherit)还有一个类的方法(methods),属性(property)和其他特性.当一个类继承其他类时,继承类叫子类(subclass),被继承类叫超类(或父类,supercla ...
- javaSE_08Java中static、继承、重写
一.Static 学习静态这个关键字,关键是抓住两个点: 1,关注其语法特点 2,关注其使用场景 案例讲解: 我们先从静态变量开始,当一个成员变量加上static修饰之后,会是一个什么效果? 比如创建 ...
- javaSE_08Java中static、继承、重写-思维导图
思维导图看不清楚时: 1)可以将图片另存为图片,保存在本地来查看 : 2)右击在新标签中打开放大查看 (IE不支持,搜狗,360可以):
- Swift 中的静态方法继承
Base and Derived Classes: class BaseClass{ class func staticMethod(){ println("BaseClass.static ...
- 【iOS】swift init构造器
这几天在使用 Swift 重写原来的一个运动社交应用 SportJoin. 为什么要重写呢? 首先因为实在找不到设计师给我作图; 其次, 我也闲不下来, 想找一些项目做, 所以只好将原来的代码重写了. ...
- Swift 类构造器的使用
Swift 中构造器需要遵循的规则还是很多的, 总结一下, 有以下规则: 调用相关 指定构造器必须调用它直接父类的指定构造器方法. 便利构造器必须调用同一个类中定义的其它初始化方法. 便利构造器在最后 ...
- Swift中子类必须包含的构造器和析构器
import Foundation /* Swift中子类必须包含的构造器 1.Swift允许在父类构造器前添加required关键字, 用于声明所有子类必须包含该required构造器 (如果没有声 ...
- Java继承中构造器的调用原理
Java的继承是比较重要的特性,也是比较容易出错的地方,下面这个例子将展示如果父类构造器中调用被子类重写的方法时会出现的情况: 首先是父类: public class test { void fun( ...
- Swift中的便利构造器和构造器链
import UIKit // 1.一个类中至少有一个指定构造器, 其必须负责初始化类中所有的实例存储属性 // 2.便利构造器属于次要的, 辅助性的构造器 // 3.类中可以不定义便利构造器, 便利 ...
随机推荐
- 导出EXCEL(转转)
)) content.AppendFormat("<td style='vnd.ms-excel.numberformat:#, ...
- 在线支付接口之PHP支付宝接口开发
支付接口一般是第三方提供的代收款.付款的平台,可以通过支付接口帮助企业或个人利用一切可以使用的支付方式.常见支付平台:支付宝.快钱.云网支付.财付通. 支付宝页面:订单页面.状态页面.返回页面.--- ...
- php设计模式 1单例模式
之前很长时间之前就学习过设计模式,但是因为在实践中很少应用,所以忽略了,但现在却意识到设计模式很重要的,程序设计简介高效冗余性代码少. 今天开始把前几天学习的几个设计模式整理一下,首先当然是单例模式. ...
- str_repeat() 函数
<?php echo str_repeat(".",13);//重复几次 ?>
- C++学习笔记1——const
Const 限定符 1. 等价 //const对象必须初始化//C++中const修饰的变量不能改变//C中const修饰的变量可以通过指针修改 2. ; const int j = i;//变量给常 ...
- ModelSim仿真入门
ModelSim仿真入门之一:软件介绍 编写这个教程之前,为了让不同水平阶段的人都能阅读,我尽量做到了零基础入门这个目标,所有的操作步骤都经过缜密的思考,做到了详细再详细的程度. 如果您是FPGA开发 ...
- ubuntu安装aircrack-ng/reaver/minidwep-gtk用来跑pin
按照下面安装方法,可以在Ubuntu 13.04中启动 minidwep.Tested with Ubuntu 13.04 1. Dependencies Code: sudo apt-g ...
- 转:关于copy_to_user()和copy_from_user()的一些用法
一.Copy_to_user( to, &from, sizeof(from)) To:用户空间函数 (可以是数组) From:内核空间函数(可以是数组) sizeof(from):内核空间 ...
- Mysql时间戳开始时间1970-01-01 00:00:00和PHP date慢8小时
mysql> select unix_timestamp('1970-01-01 00:00:01');+---------------------------------------+| un ...
- android设置组件所占的比例
当我们使用linearlayout线性布局,放置三个textview空间,设置android:layout_width属性为wrap_content,并分别设置android:layout_weigh ...