swift的基本使用(5)类和枚举
来源:互联网 发布:徒步 知乎 编辑:程序博客网 时间:2024/06/05 00:23
//: Playground - noun: a place where people can play
import UIKit
//枚举
//enum 枚举名: 类型{
// case 分支名1 = 赋值1
// case 分支名2 = 赋值2
//}
enum PersonIndentity : String{
case Teacher = “Teacher_id”
case Student = “Student_id”
}
//类
class Person {
var indentity : PersonIndentity?
var name: String?
var sex: String
//类的构造器init (name:String, sex:String, idd:PersonIndentity){ self.name = name self.sex = sex self.indentity = idd}//方法func hello() { println("hello \(self.name)")}class func hello2() { println("hello word")}//类型属性 只能是计算属性class var home: String { get{ return "地球" }}
}
//使用枚举时, 枚举名.类型
//也可以进行简化 .类型
//var student = Person(name: “dj”, sex: “f”, idd: PersonIndentity.Student)
var student = Person(name: “dj”, sex: “f”, idd: .Student)
//枚举值的获得
//代表枚举分支的行
student.indentity?.hashValue
//代表枚举分支具体的值
student.indentity?.rawValue
student.hello()
Person.hello2()
Person.home
//继承
class Student: Person {
var classNumber: Int
init(name: String, sex: String, idd: PersonIndentity, classNumber: Int) {
//子类的特有属性要在super.init前面进行赋值
self.classNumber = classNumber
super.init(name: name, sex: sex, idd: idd)
}func helloStudent () { println("子类方法")}//重写父类方法 需要使用override关键字override func hello() { println("重写父类方法")}override class func hello2() { println("重写父类类型方法")}
}
//协议
protocol OneProtocol {
func typeFunc()
static func typeFunc2()
// class func typeFunc3()
mutating func typeFunc4()
}
//继承协议,实现方法的时候,要根据结构体或类本身的语法做出调整,不能仅依靠提示
struct StructNew : OneProtocol {
func typeFunc() {
}static func typeFunc2() {}func typeFunc4() {}
}
class ClassNew: OneProtocol{
func typeFunc() {
}class func typeFunc2() {}func typeFunc4() {}
}
//若想实现方法可选实现,需要使用optional关键字,optional关键字实现条件是必须是@objc的协议, eg:@objc protocol
//但此时 协议不能被结构体继承
@objc protocol TwoProtocol{
optional func typeFunc3()
}
//struct StrucNew2: TwoProtocol {
//
//}
//如果同时继承协议和父类,父类需要写在前面
class ClassNew2:ClassNew, TwoProtocol{
}
//延展
var studentEX = “stu”
extension Person {
func hello5(){
}//延展不能添加存储属性,只能添加计算属性//var stu2: String = "jhhkk"var stu2 :String { get{ return studentEX } set{ studentEX = newValue }}//convenience 扩展类的构造器的时候,涂药添加关键字convenience init(name:String, sex:String, idd:PersonIndentity, stu:String) { self.init(name:name, sex: sex, idd: idd) self.stu2 = stu}
}
var person = Person(name: “hj”, sex: “f”, idd: PersonIndentity.Student, stu: “djj”)
person.stu2 = “ggg”
person.stu2
- swift的基本使用(5)类和枚举
- Swift-枚举的基本学习和高级使用
- Swift的基本使用(4)类和结构体
- 枚举类的基本使用
- Swift语法基础:5 - Swift的枚举和结构体
- Java 枚举类的基本使用
- Java 枚举类的基本使用
- Java 枚举类的基本使用
- Java 枚举类的基本使用
- Java 枚举类的基本使用
- java 枚举类的基本使用
- Java 枚举类的基本使用
- Java枚举类的基本使用Enum
- Java 枚举类的基本使用
- Java 枚举类的基本使用
- Java 枚举类的基本使用
- JAVA枚举类的基本使用
- Java 枚举类的基本使用
- edit控件实现拖拽
- 安装及设置MASM32 SDK
- 数据结构学习之路-第三章:栈的应用
- 第2周实践项目3--体验复杂度(1)
- Redis学习笔记(第一天)
- swift的基本使用(5)类和枚举
- 程序员面试题
- ccache and distcc
- 26-linux中的进程介绍与管理
- codeforces 156C Cipher 组合数学 字符串dp
- Cmake space in path windows
- JAVA第二周 输入字符
- OCiOS开发:Masonry的安装与使用
- DOS 常用命令