类和结构体的共同点:
///定义存储值的属性
///定义方法
///定义下标
///定义构造器
///使用extension拓展功能
///遵循协议
类和结构体的不同点:
///类有继承的特性,结构体没有
///类型转换可以在运行时检查和解释类实例的类型
///类有析构函数用来释放其分配的资源
///引用计数允许对一个类实例有多个引用
///类是引用类型,也就意味着一个类类型的变量不直接存储具体的实例对象,是对当前存储具体实例内存地址的引用。存储在堆上
///结构体是值类型,存储在栈上
swift中创建类和结构体的实例时,必须为所有的存储属性设置一个合适的初始值
///类编译器不会自动提供成员初始化器,但是结构体会
///类必须提供对应的指定构造器,也可以为当前类提供便利构造器(注意:便利构造器必须从相同的类里调用另外一个初始化器)
///指定初始化器必须保证在向上委托给父类初始化器之前,其所在类引入的属性都要初始化完成
///便利构造器必须先委托同类中的其他初始化器,