
声明和赋值:强类型,弱类型
1. 确定类型
java
变量类型 标识符=值
C/C++
变量类型 标识符=值
oc
变量类型 标识符=值
2. 推断类型
3. 推断类型推断、确定类型
kotlin
确定类型
var 标识符:变量类型=值
推断类型
var 标识符=值
ts
确定类型
var 标识符:变量类型=值
推断类型
var 标识符=值
swift
确定类型
var 标识符:变量类型=值
推断类型
var 标识符=值
4. 可变类型
python
标识符=值
js
var 标识符=值
groovy
def 标识符=值
但是兼容java的定义方式
linux shell
标识符=值
注意
=左右不能有空格
通过 $标识符 使用
window shell
set 标识符=值
注意
通过 %标识符% 使用
/p:等待用户输入赋值
set /p value=请输入变量的值
/a :通过算术运算赋值
5. 可变、推断、确定类型
dart
确定类型
变量类型 标识符=值
推断类型
var 标识符=值
可变类型
dynamic 标识符=值
与Object的区别
Object只能用Object的属性方法,dynamic可以使用赋值类型的属性方法
访问修饰符
java、groovy类
public
只要导入就能访问
protected
子类才能访问
friendly(default)
同包可访问
private
不可访问,私有的
kotlin
public(default)
internal
子主题 1
protected
private
ts
public(默认)
只要导入就能访问
protected
子类才能访问
private
不可访问,私有的
swift
open
可以被任何人使用,包括override和继承
public
可以被任何人访问。但其他module中不可以被override和继承,
而在module内可以被override和继承。
internal(默认)
fileprivate
文件内私有
相当于dart的_下划线私有
private
不可访问,类内私有的
oc
特点
访问修饰符只能用来修饰属性,不能用来修饰方法。
@public
公共的,被其修饰的属性可以在任意地方访问。
@package
被其修饰的属性,可以在当前框架中访问
@protected(默认)
在本类以及本类的子类中访问
@private
本类的内部访问
c++
public
只要导入就能访问
protected
子类才能访问
private(默认)
不可访问,私有的
没有访问修饰符的语言
dart
默认是public
使用下划线_开头 实现private
是根据package类分的,不是根据class来分的
所以可以通过在同一个文件通过_下划线定义变量来达到java的friendly访问类型
使用@protected注解变量 实现protected
实际测试是没有用的,只会在外部调用时有一个黄色的下划线,警告应该在子类使用,但是还能正常运行
linux shell
window shell
python
js
c
静态变量 定义
static方式
java
groovy
ts
dart
c/c++
oc:但是有限制
companion object{}
kotlin
也可以 object XXX{这里面定义}
顶层声明的方式
kotlin
类内层,方法外层声明方式
python
通过为类和方法扩展属性
js:直接对(类|方法).标识符=值
没有
linux shell
window shell
常量
final
java
groovy
只能使用java的,def定义不了常量
dart:有两种
定义时可以先不赋值
val
对于kotlin来说不是定义常量,而是定义只能重写get方法的变量
const
kotlin
另一种kotlin独有的注解@JvmField也可以 @JvmField val NAME = "89757
注意 只能使用在文件上,而不是属于任何类
const val name = "Kotlin"
class DemoConstant {}
object内
class DemoConstant {
companion object {
const val subName = ""
}
}
js
但是在超集TS中,const关键字不能用于声明类的属性
dart:有两种
定义时必须要赋值
oc
static const 数据类型 *标识符 = 值;
局部常量:用static修饰后,不能提供外界访问
const 数据类型 *标识符 = 值;
全局常量:不管你定义在任何文件夹,外部都能访问
数据类型 const *标识符 = 值;
数据类型 * const 标识符 = 值;
c/c++
readonly
ts
linux shell
let
swift
宏定义
oc
define 标识符 值
在预处理器里进行文本替换
没有类型,不做任何类型检查
相同的字符串只保存一份(甚至子字符串直接不保存通过截取方式)
c/c++
没有
python
通过自己写改变时抛异常的类实现
class _const:
class ConstError(TypeError):pass
def setattr(self,name,value):
if name in self.dict:
raise self.ConstError("Can't rebind const (%s)" %name)
self.dict[name]=value
==============================================
const = _const()
const.PI=3.14
print(const.PI)
window shell
网友评论