構造器相關

2021-09-07 05:37:43 字數 1478 閱讀 8747

import uikit

// 值型別的構造器重載

struct constructoroverload

// 提供帶兩個引數的構造器來完成構造過程

init(name: string, amount: int)

}// 通過無引數構造器建立constructoroverload例項

var oc1 = constructoroverload()

// 通過有引數構造器建立constructoroverload例項

var oc2 = constructoroverload(

name:"helloworld",amount:800000)

print("\(oc1.name) \(oc1.amount)")

print("\(oc2.name) \(oc2.amount)")

/*構造器**(貌似只支援值型別, 下面解釋來自網路):

值型別(結構體和列舉型別)不支援繼承,所以構造器**的過程相對簡單,

因為它們只能**任務給本身提供的其它構造器。類則不同,它可以繼承自其它類(請參考繼承),

這意味著類有責任保證其所有繼承的儲存型屬性在構造時也能正確的初始化。

在定義構造器時,通過self.init(實參)呼叫其他構造器來完成例項的部分構造過程

*/

// 兩個引數的構造器

init(name: string , color:string)

// 為構造器顯式指定外部形參名

// 定義三個引數的構造器

init(name: string , color: string , weight: double)

}print("\(ap1.name)--->\(ap1.color)")

print("\(ap2.name)--->\(ap2.color)")

/* 可能失敗的構造器 */

// !號和?號的區別在於, !號修飾的構造器, 在使用被建立出來的物件的時候, 不用再加!解包

class cat

}}let c1 = cat(name: "kitty")

if c1 != nil

let c2 = cat(name: "")

print(c2 == nil) // 輸出true,表明c2為nil

enum season

}}let s1 = season(name: "s")

if s1 != nil

let s2 = season(name: "x")

print(s2 == nil)

class person

}}var p = person(name: "lili")

var p2 = person(name: "rinpe")

/*1.swift只為類提供乙個無引數的構造器。

2.swift為結構體提供兩個構造器:無引數的構造器和初始化所有例項儲存屬性的構造器。

*/

構造器(構造方法)

知識點 1.乙個類即使什麼都不寫,他也會存在乙個方法 構造器 構造方法 2.構造方法的名字必須與定義他的類名完全相同,沒有返回型別,甚至連void也沒有。3.構造方法的呼叫是在建立乙個物件時使用new操作進行的。構造方法的作用是初始化物件。4.有參構造 一旦定義了有參構造,無參一定要寫出來!pack...

構造器(構造方法)

題目 編寫兩個類 和 test,其中 類中宣告私有的底邊長base和高height,同時宣告公共方法訪問私有變數。此外,提供類必要的構造器。另乙個類中使用這些公共方法,計算三角形的面積。回答 public class test public int a,int b public void setba...

構造器,建構函式,構造方法

student s1 new student 類名 物件名 new 構造方法 2 當定義乙個類時,即使類中什麼內容都沒有定義,其也預設的隱藏的存在乙個無參的構造器 預設無參構造器 編譯器提供的。當然我們也可以顯現的定義出來。如 class student 當我們把它顯現的定義出來 class stu...