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

本文共 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

你可能感兴趣的文章
UIKit框架(15)PCH头文件
查看>>
整理看到的好的文档
查看>>
Linux磁盘管理和文件系统管理
查看>>
linux运维人员的成功面试总结案例分享
查看>>
Windows DHCP Server基于MAC地址过滤客户端请求实现IP地址的分配
查看>>
命令查询每个文件文件数
查看>>
《跟阿铭学Linux》第8章 文档的压缩与打包:课后习题与答案
查看>>
RAC表决磁盘管理和维护
查看>>
Apache通过mod_php5支持PHP
查看>>
发布一个TCP 吞吐性能测试小工具
查看>>
java学习:jdbc连接示例
查看>>
PHP执行批量mysql语句
查看>>
Extjs4.1.x 框架搭建 采用Application动态按需加载MVC各模块
查看>>
Silverlight 如何手动打包xap
查看>>
建筑电气暖通给排水协作流程
查看>>
JavaScript面向对象编程深入分析(2)
查看>>
linux 编码转换
查看>>
POJ-2287 Tian Ji -- The Horse Racing 贪心规则在动态规划中的应用 Or 纯贪心
查看>>
Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月7日-1月14日)
查看>>
关于C#导出 文本文件
查看>>