博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
雨课堂知识点总结(十四)
阅读量:6435 次
发布时间:2019-06-23

本文共 1663 字,大约阅读时间需要 5 分钟。

5.2

subtyping

1.

Behavioral subtyping必须要满足的条件,不包括以下_

A

子类型可以增加父类型中所没有的新方法
B
子类型override父类型的某方法,子类型方法需具备相同或更弱的post-condition
C
子类型必须要具备与父类型相同或更弱的invariants(不变量)
D
子类型override父类型的某个方法,不能比父类型方法抛出新的异常类型,但可比父类型方法抛出的异常更少
正确答案:BC
2.
关于Behavioral subtyping的说法,不正确的是_

A

子类型override父类型某个方法,其返回值类型应该与父类型方法的返回值类型相同或者更具体(子类型)
B
子类型override父类型某个方法,其参数的类型应该与父类型方法的参数类型相同或者更具体
C
某个类是immutable的,它可以派生出一-个mutable的子类
D
子类型override父类型某个public方法,子类型中该方法的可见性可以为private
答案:BCD

C选项: java允许你这么设计, statictype checking也可以通过,但却是违反LSP的,因为immutable也是invariant (不变量),子类型的

invariant应该等于或强于父类型,而一个mutable的子类型就不再具备这个invariant。

D选项:把一个public方法override为private方法,那么如果用子类型的对象取代父类型对象,就无法调用这个操作了,所以无法取代,所以违反LSP。

3.

public class A {
public object a (String d) {
return "";}}
public class B extends A {
@Override
public String a (Object d) {
return null;}

}

该段Java代碣是否能通辻statictype checking?
A:能
B:不能
正确答案:B
答案解析:
虽然方法a在类A和类B里符合
covariance和contra-variance ,但因为Java不支持contra-variance ,这里的@Override是不能成立的。
4.
public class A {
public object a (String d) {
return "" ;}}
public class B extends A {
public String a (0bject d) {
return null;}}
亥段Java代碣是否能通辻statictype checking?
A 能
B 不能
正硝答案: A
解析:方法a在类A和类B里符合covariance和contra-variance,但因为java不支持contra-variance,于是
编译器就把B中的a方法看做A中a方法的overload
5.
void print(List<Object> list)
{...}
以下__作为参数传递进去不是对它的合法调用?
A: List<Integer> a;
B List<?> a;
C: Arraylist<Integer> a;
D: List<? extends Object> a;
E: List<Object> a;
答案:abcd
6.
void print
(List<? extends Number> list)
{...}
以下__作为参数传递进去不是对它的合法调用?
A: List<Integer> a;
B: List<?> a;
C: ArrayList<Integer> a;
D: List<? extends Integer> a;
E: List<0bject> a;
正确答案:BE

 

转载于:https://www.cnblogs.com/HIT-ryp/p/10683111.html

你可能感兴趣的文章
seafile服务器配置
查看>>
HyperLedger Fabric 1.2 区块链应用场景(3.1)
查看>>
也谈谈初创公司的技术团队建设
查看>>
阿里云 APM 解决方案地图
查看>>
中国HBase技术社区第一届MeetUp-HBase2.0研讨圆桌会
查看>>
学渣的模块化之路——50行代码带你手写一个common.js规范
查看>>
把前端监控做到极致
查看>>
python——变量
查看>>
subline上装node.js插件
查看>>
python字符串操作实方法大合集
查看>>
Linux学习(十一):不可忽略的Linux支持的文件系统
查看>>
[转]VC++中操作XML(MFC、SDK)
查看>>
WiFi连接风险造成个人信息外泄 网络安全需加强
查看>>
2017(中国)商博会系列介绍之智能生活展
查看>>
eclipse link方式安装 sts(Spring Tool Suite)
查看>>
数据结构思维 第三章 `ArrayList`
查看>>
CentOS6、7编译安装FFmpeg
查看>>
Android项目实战(二十九):酒店预定日期选择
查看>>
PHP IDE phpstorm 常用快捷键
查看>>
蓝牙的未来怎样发展?
查看>>