14.类的基本定义,类型推断、安全和类型转换

/*

类的基本定义

Swift中的结构体和类非常相似, 但是又有不同之处

类是具有相同属性和方法的抽象

格式:

class 类名称 {

类的属性和方法

}

*/

class Rect {

var width:Double = 0.0

var height:Double = 0.0

func show() -> Void{

print("width = \(width) height = \(height)")

}

}

// 类没有逐一构造器

//var r1 = Rect(width: 10.0, height: 10.0)

var r1 = Rect()

r1.show()

var r2 = r1

r2.show()

// 类是引用类型, 结构体之间的赋值其实是将r2指向了r1的存储控件, 所以他们是两个只想同一块存储空间, 修改其中一个会影响到另外一个

r1.width = 99

r1.show()

r2.show()

/*

恒等运算符, 用于判断是否是同一个实例, 也就是是否指向同一块存储空间

=== !==

*/

var r3 = Rect()

if r1 === r3

{

print("指向同一块存储空间")

}

第二、类的定义

import UIKit

class Student : NSObject {

// 1.属性

// 1> 存储属性

// 注意一:在开发中,如果是对象或者结构体,在没有赋值的情况下通常定义为可选类型

var name : String?

// 注意二:在开发中,如果是基本属性类型,比如int类型,在没有赋值的情况下,通常直接给一个默认的值0

var age : Int = 0

var chineseScore : Double = 0.0

var mathScore : Double = 0.0

// 2> 计算属性

/*

var average : Double {

get {

return (chineseScore + mathScore) * 0.5

}

// 较少写set方法(默认情况下,set方法中有一个系统变量:newValue.新传入的值就再newValue中)

set {

self.average = newValue

}

}

*/

// 如果计算属性是一个只读属性,则可以省略get{}

var average : Double {

return (chineseScore + mathScore) * 0.5

}

// 3> (了解)类属性

// 注意:

// * 类属性用static修饰

// * 类属性只能通过类来访问

static var courseCount = 0

}

// 创建类的对象

let stu : Student = Student()

stu.name = "yz"

stu.age = 11

stu.chineseScore = 61.5

stu.mathScore = 97.8

if let tempName = stu.name {

print("name is \(stu.name!), age is \(stu.age), 语文成绩:\(stu.chineseScore), 数学成绩:\(stu.mathScore)")

}

// 获取yz老师的平均成绩

print(stu.average)

Student.courseCount = 2

print(Student.courseCount)

class Person : NSObject {

var name : String?

var age : Int = 0

var height : Double = 0.0

}

let p = Person()

// 注意:赋值不是调用set方法,直接拿到属性给属性赋值

p.name = "why"

p.age = 18

p.height = 1.88

第三、类型转换

/*

Swift不允许隐式类型转换, 但可以使用显示类型转换(强制类型转换)

OC:

int intValue = 10;

double doubleValue = (double)intValue;

Swift:

*/

var intValue:Int = 10

var doubleValue:Double

doubleValue = Double(intValue)

// 注意:Double()并不会修改intValue的值, 而是通过intValue的值生成一个临时的值赋值给doubleValue

print(intValue)

print(doubleValue)

时间: 2024-10-11 18:23:51

14.类的基本定义,类型推断、安全和类型转换的相关文章

类型安全和类型推断

Swift 是一个类型安全(type safe)的语言.类型安全的语言可以让你清楚地知道代码要处理的值的类型.如果你的代码需要一个String,你绝对不可能不小心传进去一个Int. 由于 Swift 是类型安全的,所以它会在编译你的代码时进行类型检查(type checks),并把不匹配的类型标记为错误.这可以让你在开发的时候尽早发现并修复错误. 当你要处理不同类型的值时,类型检查可以帮你避免错误.然而,这并不是说你每次声明常量和变量的时候都需要显式指定类型.如果你没有显式指定类型,Swift

Java——定义类,引用类数据类型,集合类型(array list)

一.定义类 1.类的格式 public class 类名{ // 类名最好和文件名一样 数据类型 属性名称1: 数据类型 属性名称2: -} // phone.java public class Phone { // 属性 String brand; // 品牌型号 String color; // 颜色 double size; // 尺寸大小 } 2.类的调用 p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-he

Oracle数据库使用mybatis的时候,实体类日期为Date类型,mybatis里面定义的是Date类型,插入的时候,时分秒全部是12:00:00问题

实体类中日期定义的是Date类型的,没毛病: 我在mybatis里面定义的是Date类型的,进行测试的时候发现,数据库插入的日期的时分秒全部都是一样的,都是12:00:00,很郁闷: 后来把mybatis里的类型改为TIMESTAMP,发现查询,插入和修改都正常了. 原文地址:https://www.cnblogs.com/zhang-yawei/p/10362849.html

JDK11 | 第三篇 : 局部变量类型推断

文章首发于公众号<程序员果果> 地址 : https://mp.weixin.qq.com/s/PB0Mw4bzjDML7nto2M8x2w 一.简介 Java局部变量类型推断(LVTI),简称var类型(标识符var不是一个关键字,是一个预留类型名),Java10中新添加的功能.作为100%编译特征,它不会影响字节码,运行时或者性能.在编译时,编译器会检查赋值语句右侧代码,从而推断出具体类型.它查看声明的右侧,如果这是一个初始化语句,它会用那个类型取代var.另外,它非常有助于减少冗余代码和

C++11新特性:自动类型推断和类型获取

声明:本文是在Alex Allain的文章http://www.cprogramming.com/c++11/c++11-auto-decltype-return-value-after-function.html的基础上写成的. 加入了很多个人的理解,不是翻译. 转载请注明出处 http://blog.csdn.net/srzhz/article/details/7934483 自动类型推断 当编译器能够在一个变量的声明时候就推断出它的类型,那么你就能够用auto关键字来作为他们的类型: [c

浅谈C#中的常量、类型推断和作用域

浅谈C#中的常量.类型推断和作用域 作者: 字体:[增加 减小] 类型:转载 时间:2013-12-19我要评论 这篇文章主要介绍了C#中的常量.类型推断和作用域,有需要的朋友可以参考一下 一.常量常量是其值在使用过程中不会发生变化的变量.在声明和初始化变量时,在变量前面家关键字const,就可以把该变量指定为一个常量: const int a=100;//a的值将不可以改变 常量的特征: 1.常量必须在声明时初始化.指定了其值以后,就不能再修改了.2.常量的值必须能在编译时用于计算.因此不能从

scala类型推断及库方法设计原则和==与java有何差别

scala类型推断 方法msortSwapped(abcd)(_>_) 通常,一旦有需要推断多台方法类型参数的任务时,类型推断器就只参考第一个参数列表中所有参数类型,但不会参考之后其他参数.因为方法msortSwapped是柯里化的方法,带两个参数列表,所以第二个参数(也就是说,那个函数值)将不会用来做决定方法参数的参考. 因此这种类型推断方案也隐含了如下库方法设计原则:如果需要把参数设计为若干非函数值及一个函数值的某种多态方法,需要把函数参数放在柯里化参数列表的最后面.这样一来,方法的正确类型

C++ -&gt; 类(Classes)的定义与实现

C++ -> 类(Classes)的定义与实现 一."类" 的介绍    在C++中, 用 "类" 来描述 "对象", 所谓的"对象"是指现实世界中的一切事物.那么类就可以看做是对相似事物的抽象, 找到这些不同事物间的共同点, 如自行车和摩托车, 首先他们都属于"对象", 并且具有一定得相同点, 和一些不同点, 相同点如他们都有质量.都有两个轮子, 都是属于交通工具等."都有质量"

41_自定义泛型方法的练习与类型推断总结

编写一个泛型方法,自动将Object类型的对象转换成其他类型. //编写一个泛型方法,自动将Object类型的对象转换成其他类型.      private static <T> T autoConvert(Object obj){ return (T)obj; } 定义一个方法,可以将任意类型的数组中的所有元素填充为相应类型的某个对象. //定义一个方法,可以将任意类型的数组中的所有元素填充内容为相应类型的某个对象 private static <T> void fillArra