Swift基础(七)类
来源:互联网 发布:淘宝问卷调查 编辑:程序博客网 时间:2024/06/05 16:54
var someClass = SomeClass();
// 访问存储属性
let newValue1 = someClass.value1;
let newValue2 = someClass.value2;
// 访问类型属性
SomeClass.newValue;
// 调用实例方法
someClass.additive() // 加1
someClass.subtraction(10) // 减去指定的值
someClass.reset() // 设置为0;
// 调用类方法
SomeClass.betterArmed(); // 你拥有最好的装备-制杖
// 子类调用方法
NewSomeClass.betterArmed(); // 你拥有最好的装备-制杖
// 子类,重写了父类方法
// 使用下标脚本
someClass[0] = 5;
someClass[1] = 6;
print(someClass[0]);
print(someClass[1]);
// self属性(局部变量和存储属性同名的解决方法)
class NewClas {
var count: Int = 100;
func printcount() {
var count: Int = 50;
print(count); // 使用局部变量,输出50
print(self.count); // 使用存储变量,输出100
}
}
class SomeClass {
// 在这里定义属性、下标脚本、方法
// 在Swift中,属性可以将值跟特定的类、结构或枚举关联。属性一般分为存储属性,计算属性和类型属性
// 定义存储属性 必须有初始值,否则会出现错误
var value1 = 0;
var value2: Int = 0;
// 定义计算属性,不存储值,而是提供一个getter和setter来获取值、设置其他属性的值。getter使用get关键字定义,setter使用set关键字进行定义,语法形式如下:
var cal: Int { // 定义计算属性 cal
get { // 定义 getter
return cal;
}
set (newValue) { // 定义 setter
cal = newValue;
}
}
// 类型属性,就是不需要对类进行实例化就可以使用的属性。它需要使用关键字 class 进行定义,除了有关键字class外,还需要使用var关键字,但不能使用let关键字,否则程序提示错误。定义一个类型属性 newValue的代码如下:
class var newValue: Int { // 定义类型属性 newValue
return 10;
}
// 属性监视器,可以用来监控属性值的改变,每次属性被修改的时候,都会被调用,即使新的值和旧的值一样。一个属性监视器由willSet和didSet组成。
// willSet 在设置新的值之前被调用,新的值作为传参,
// didSet 在新的值被设置之后被调用,会将旧的属性值作为传参。
// 下面使用属性监视器监视 totalSteps属性值的变化
var teachers: Int = 0 {
// 完整的属性监视器
willSet(newTeachers) {
print("新增加老师 \(newTeachers)");
}
didSet(old) {
if teachers > old {
print("与原来相比增加了 \(teachers - old) 位老师");
}
}
}
// 方法,就是定义在类中的函数。在 Swift 中,根据被使用的方式不同,方法分为了实例方法和类方法两种。
// 实例方法
var score = 0;
// 让 score加1
func additive() {
score++;
print(score);
}
// 让score 减去一个指定的数值
func subtraction(amount: Int) {
score -= amount;
print(score);
}
// 将score设置为0
func reset() {
score = 0;
print(score);
}
// 类方法,类名调用,定义类型方法需要在func关键字之前加上关键字class
// 定义类型方法
class func betterArmed() {
print("你拥有最好的装备-制杖");
}
// 下标脚本,就是通过索引快速取值的一种语法,例如数组的a[0]就是一个下标脚本,通过索引0老快速取值。在Swift中,我们可以在类(Class)、结构体(structure)和枚举(enumeration)中自己定义下标脚本。下标脚本是访问对象、集合或者序列的快速方式。尅发着不需要调用实例特定的赋值和访问方法,就可以直接访问所需要的数值。
// 下标脚本使用subscript关键字来定义,通过get、set来定义读、写属性,可以只有get只读方法。
/*
subscript(参数名称1:数据类型,参数名称:数据类型,...) -> 返回值的数据类型 {
get {
// 返回与参数类型一样的值
}
set() {
// 执行相关赋值操作
}
}
*/
// 在类中定义一个下标脚本,代码如下:
var age: [Int] = Array(count: 5, repeatedValue: 0);
subscript(index: Int) -> Int {
get {
return age[index];
}
set(newValue) {
age[index] = newValue;
}
}
}
class NewSomeClass: SomeClass {
// 子类使用override关键字来重写父类的方法。如果没有写override,就会出现编译器错误。同样,编译器也会检查带有override关键字的方法是否真的重写了父类的方法
override class func betterArmed() {
super.betterArmed();
print("子类,重写了类方法");
}
}
- Swift基础(七)类
- Swift基础(七):继承、构造过程
- Swift学习——Swift基础详解(七)
- swift UITableView(七)
- Swift 笔记(七)
- 学习Swift笔记 (七)
- Swift教程_零基础学习Swift完整实例(七)_swift完整实例(构建展示层)
- Swift 基础(一)
- Swift基础(二)
- Java语言基础(七)-包装类
- CodeSmith基础(七)
- CodeSmith基础(七)
- CodeSmith基础(七)
- jquery基础(七)
- CodeSmith基础(七)
- JAVASE基础(七)
- swift学习笔记(七)(定位)
- Swift简明教程(七)泛型
- eclipse打包遇到的manifest文件丢失等问题解决
- IX Samara Regional Intercollegiate Programming Contest K. Palindromization
- Qt智能指针
- WebForm中使用MVC
- 【案例】华为助力传统广播新媒体转型
- Swift基础(七)类
- Java实现代理ip访问网络的实现方式之Java实现切换ip访问网络资源
- css line-height 探究
- 求C(n,m)%mod
- 未来智能,触摸未来 ---记2016华为开发者大赛沙龙上海站
- Android开源特效常用链接大集合
- (4.2.33)Android上玩玩Hook(1):Cydia Substrate初识
- 抽象类和接口
- Spring—Quartz定时调度CronTrigger时间配置格式说明与实例