Swift學習——類的定義,使用,繼承,構造等(五)

Swift學習——類的定義,使用,繼承,構造等(五)


類的使用說明

    1 使用class和類名來創建一個類名,例如: class student

    2 類中屬性的聲明和常量和變量一樣,唯一的區別就是他們的上下文是類

    3 方法和函數聲明也一樣


// 1 ---- 簡單的類介紹
class Student{
    
    //變量學號初始化爲0
    var num = 0;
    
    //成員函數
    func GetNum()->Int{
        return num
    }
}

//創建類的實例對象

var student = Student()


//訪問類的成員變量

student.num = 1

//訪問類的成員函數
var Num = student.GetNum()

//打印出類的變量和成員函數
println("student1 num is \(student.num)")
println("student2 num is \(Num)")


// 2 ---- 類中的構造函數和析構函數

/*
    構造函數 init
    析構函數 deinit
*/

class StudentLow{
    var numberlow:Int = 0
    var namelow:String
    
    //構造函數,構造器來賦值
    init(namelow:String){
        
        /*
            self被用來區別實例變量,當你創建實例的時候,像傳入函數參數一樣給類
            傳入構造函數的參數。每個屬性都需要賦值-無論是通過聲明(numberlow)
            還是通過構造函數(就像namelow)
        */
        
        self.namelow = namelow
    }
    
    func simpleDescription()->String{
        
        return "I am is low studnet"
    }
    
}

//注意我的構造函數有參數,這裏我創建實例對象時,要加上參數才正確

var studentlow1 = StudentLow(namelow:"Jhon")

studentlow1.numberlow = 2

println("studentlow1 num is \(studentlow1.numberlow)")
println("studentlow1 name is \(studentlow1.namelow)")
println("studentlow1 information is \(studentlow1.simpleDescription())")


// 3 ---- 繼承類,創建StudentLow的子類StudentHight

/*
    繼承說明:
        子類的定義方法是在它們的類名後面加上父類的名字,用冒號分割。
        創建類的時候並不需要 一個標準的根類,所以你可以忽略父類。
*/

class StudentHight:StudentLow{
    
    var grade:Double
    
    init(grade:Double,name:String){
        self.grade = grade
        
        //注意namelow:name參數傳遞
        
        super.init(namelow:name)
        numberlow = 3
    }
    
    func Grade()->Double{
        return grade*0.9
    }
    
    //子類如果要重寫父類的方法的話,需要用 override 標記——如果沒有添加 override 就重寫 父類方法的話編譯器會報錯。
    //編譯器同樣會檢測 override 標記的方法是否確實在父類中。
    
    override func simpleDescription()->String{
        return "I am a hight student"
    }
    
}

//創建實例對象

let studenthight1 = StudentHight(grade:98,name:"lucy")

println("studenthight1 num is \(studenthight1.numberlow)")

println("studenthight1 name is \(studenthight1.namelow)")

//調用函數
println("Greades is \(studenthight1.Grade())")

println("studenthight1 grade is \(studenthight1.grade)")

//調用函數
println("studenthight1 information is \(studenthight1.simpleDescription())");


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章