说明
class
class:
1.可以创建存储属性,
2.可以创建计算属性且必须实现,
3.必须有初始化方法且初始化变量,
4.可以声明方法且必须实现
class-extension:
1.只可以创建计算属性且必须实现,
2.可以声明方法且必须实现
struct
struct:
1.可以创建存储属性,
2.可以创建计算属性且必须实现,
3.可以声明方法且必须实现
struct-extension:
1.只可以创建计算属性且必须实现,
2.可以声明方法且必须实现
enum
enum:
1.只可以创建计算属性且必须实现,
2.可以声明方法且必须实现
enum-extension:
1.只可以创建计算属性且必须实现,
2.可以声明方法且必须实现
protocol
protocol:
1.只可以创建计算属性且不可实现,
2.可以声明方法但不可实现
protocol-extension:
1.只可以创建计算属性且必须实现,
2.可以声明方法且必须实现
代码
import Foundation
class A_class{
//可以创建存储属性
let name:String
//可以创建计算属性
var name2:String{
get{
return "name"
}
set{
}
}
//必须初始化且初始化变量,let修饰编译不会报错
init(name:String){
self.name = name
}
//可以声明方法且必须实现
func done(){
print("done")
}
}
extension A_class{
//只可以创建计算属性
var nameE:String{
get{
return "nameE"
}
set{
}
}
//可以声明方法且必须实现
func doneE(){
print("doneE")
}
}
struct A_struct{
//可以创建存储属性
let name:String
//可以创建计算属性
var name2:String{
get{
return "name"
}
set{
}
}
//可以声明方法且必须实现
func done(){
print("done")
}
}
extension A_struct{
////只可以创建计算属性
var nameE:String{
get{
return "nameE"
}
set{
}
}
//可以声明方法且必须实现
func doneE(){
print("doneE")
}
}
enum A_enum{
//只可以创建计算属性
var name:String{
get{
return "name"
}
set{
}
}
//可以声明方法且必须实现
func done(){
print("done")
}
}
extension A_enum{
//只可以创建计算属性
var nameE:String{
get{
return "nameE"
}
set{
}
}
//可以声明方法且必须实现
func doneE(){
print("doneE")
}
}
protocol A_protocol{
//只可以创建计算属性且不可实现
var name:String { get set }
//可以声明方法但不可实现
func done()
}
extension A_protocol{
//只可以创建计算属性
var nameE:String{
get{
return "nameE"
}
set{
}
}
//可以声明方法且必须实现
func doneE(){
print("doneE")
}
}