Swift语言类的嵌套直接嵌套多次嵌套Swift语言入门很简单大学霸

Swift语言类的嵌套直接嵌套多次嵌套Swift语言入门很简单大学霸

Swift语言快速入门v3.0

Swift语言快速入门v3.0

8.5  类的嵌套在一个类中可以嵌套一个或者多个类Swift语言类的嵌套直接嵌套多次嵌套Swift语言入门很简单大学霸。它们的嵌套形式也是不同的,大致分为了两种:直接嵌套和多次嵌套。下面依次讲解这两种方式。

8.5.1  直接嵌套Swift语言类的嵌套直接嵌套多次嵌套Swift语言入门很简单大学霸

当一个类或者多个类直接嵌套在另外一个类,这时就构成直接嵌套,如图8.6所示。

图8.6  类的嵌套

在图8.6中,类2、类3和类4都是直接嵌套在类1中。对于这种情况,使用类1的实例属性和方法,语法形式如下Swift语言类的嵌套直接嵌套多次嵌套Swift语言入门很简单大学霸:

类1().属性

类1().方法

使用类1的类型属性和方法的形式如下:

类1.属性

类1.方法

Swift语言类的嵌套直接嵌套多次嵌套Swift语言入门很简单大学霸使用类2的实例属性和方法,语法形式如下:

类1.类2().属性

类1.类2().方法

使用类2的类型属性和方法的形式如下:

类1.类2.属性

类1.类2.方法

类3和类4的使用方法类似。

Swift语言类的嵌套直接嵌套多次嵌套Swift语言入门很简单大学霸【示例8-21】以下将定义一个直接嵌套的类NewClass,在此类中嵌套了Str1Class、Str2Class、Str3Class这3个类,和一个可以输出这3个类中属性内容的方法。在Str1Class、Str2Class、Str3Class这三个类中又定义了类型属性,它们都会返回一个字符串。代码如下:

import Foundation

class NewClass {

 class func printstr(str:String){

               println(str)

}

//Str1Class类

class Str1Class{

class var str:String{

return “Swift”

}

}

//Str2Class类

class Str2Class{

class var str:String{

return “Hello”

}

}

//Str3Class类

class Str3Class{

class var str:String{

return “World”

}

}

}

//调用

NewClass.printstr(NewClass.Str1Class.str)

NewClass.printstr(NewClass.Str2Class.str)

NewClass.printstr(NewClass.Str3Class.str)

Swift语言类的嵌套直接嵌套多次嵌套Swift语言入门很简单大学霸在此代码中,在一个NewCllass类中有包含了3个类,分别为Str1Class、Str2Class、Str3Class。运行结果如下所示:

Swift

Hello

World

Program ended with exit code: 0

8.5.2  多次嵌套Swift语言类的嵌套直接嵌套多次嵌套Swift语言入门很简单大学霸

Swift中,类的嵌套不仅允许一次嵌套,还允许多次嵌套。这时的嵌套形式如图8.7所示。

 

图8.7  类的嵌套2

类3和类4是直接嵌套在类2中,而类2又直接嵌套在类1。这样形成了多层嵌套。这时,如果访问类1的实例属性和方法,其语法形式如下:

类1().属性

类1().方法

访问类1的类型属性和方法,其语法形式如下:

类1.属性

类1.方法

如果要访问类2的实例属性和方法,对应的语法形式如下:

类1.类2().属性

类1.类2().方法

访问类2的类型属性和方法,对应的语法形式如下:

类1.类2.属性

类1.类2.方法

如果要访问类3的实例属性和方法,对应的语法形式如下:

类1.类2.类3().属性

类1.类2.类3().方法

如果要访问类3的类型属性和方法,对应的语法形式如下:

类1.类2.类3.属性

类1.类2.类3.方法

【示例8-22】以下将定义一个多次嵌套的类NewClass,在此类中嵌套了StrClass类,和一个可以输出属性内容的方法。在StrClass类中又嵌套了Str1Class、Str2Class、Str3Class这3个类,它们都会返回一个字符串。代码如下:

import Foundation

class NewClass {

class func printstr(str:String){

println(str)

}

// StrClass类

class StrClass{

// StrClass1类

class Str1Class{

class var str:String{

return “Hello”

}

}

// StrClass2类

class Str2Class{

class var str:String{

return “Swift”

}

}

// StrClass3类

class Str3Class{

class var str:String{

return “World”

}

}

}

}

//调用

NewClass.printstr(NewClass.StrClass.Str1Class.str)

NewClass.printstr(NewClass.StrClass.Str2Class.str)

NewClass.printstr(NewClass.StrClass.Str3Class.str)

在此代码中,在一个NewCllass类中有包含了1个类StrClass,在StrClass类中又包含了3个类,分别为Str1Class、Str2Class、Str3Class。运行结果如下所示:

Hello

Swift

World

Program ended with exit code: 0

Swift语言类的嵌套直接嵌套多次嵌套Swift语言入门很简单大学霸

Comments are closed.