哈工大软件构造复习

数据类型与静态检查

1

在Java中,数据类型分为基本数据类型(int、boolean、char等)和对象数据类型(String、Integer等)。所有的基本数据类型都是Immutable的,而且在栈中分配内存,代价也比较低。而对象数据类型有的是Immutable的,有的是Mutable的,分配的内存都在堆中,代价相对昂贵。因此在能使用基本类型的情况下尽量使用基本数据类型,降低代价。

对象数据类型是OOP的核心,由于对象数据类型存在继承(extends)机制,因此在OOP中可以更好的复用代码。

基本类型被包装为对象类型,通常只有在定义集合的时候使用,其他情况下尽量避免使用。基本类型和对象类型之间一般可以自动转换。

静态类型语言(Java)可执行静态类型检查,在编译阶段进行类型检查,这意味着避免了将错误带入到运行阶段,可以提高程序的正确性/健壮性,例如语法错误、类名/函数名错误,参数类型或数目错误、返回值类型错误都可以在静态类型检查时发现;动态类型语言(python)只有动态类型检查,在运行阶段才会进行类型检查,例如非法的参数值 (最典型的NULL引用)、非法的返回值、越界等等。

静态类型检查是关于数据类型的检查,它不会关心具体的值,而动态类型检查是关于值的检查。

例如int n=1.1在静态类型检查的时候就会报错,但double a=0; double b=2/a;只有在运行之后,执行动态类型检查的时候才会报告除零错。

接口、继承和重写

接口可以实现静态方法,使用 static 关键字。

通过static关键字可以实现静态工厂方法,从而将接口的实现类封装,实现对外信息隐藏。

接口中也允许使用 default 关键字来定义并实现实例方法,这个应用有点类似于抽象类的功能。

通过default方法,在接口中统一实现某些功能,无需在各个类中重复实现它。

子类可以继承父类的数据域和方法。

严格继承:子类只能添加新方法,无法重写超类中的方法。原因:父类中的方法使用了final关键字限定。

重写:子类的方法覆盖了父类的方法。重写的方法应该与父类方法有相同的签名,只有这样编译器才会判定为重写的方法。使用@Override annotation强制检查是否重写了超类中的方法。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值