zoukankan      html  css  js  c++  java
  • 雨课堂知识点总结(十四)

    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

  • 相关阅读:
    SAP一些学习网址
    Silverlight RIA Servcie 删除子对象实体提交错误的问题[解决]
    Clean up your BizTalk databases
    Silverlight RIA Service开发实战总结(一)
    Silverlight ToolKitAutoCompleteBox bug(Style bug)
    domaincontext load 回调
    数据驱动开发For Silverlight WCF RIA1.0 三步曲
    xpath 查询忽略大小
    代码重构之没有理由拒绝Lambda表达式
    离写出大师级代码只差这一步
  • 原文地址:https://www.cnblogs.com/HIT-ryp/p/10683111.html
Copyright © 2011-2022 走看看