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

  • 相关阅读:
    python测试开发django-99.views视图中 locals() 函数使用
    python测试开发django-98.views视图函数中request参数详解
    jenkins学习18
    Assignment Problem的若干思考
    为博客园文章添加 “分享到Teams”按钮
    新书上市——Microsoft Teams 平台完全手册
    《Microsoft Teams 平台完全手册》第三章出炉
    Microsoft Teams平台手册公开邀请试读
    《Microsoft Teams平台完全手册》开工
    Teams 开发平台月报(2021-03)
  • 原文地址:https://www.cnblogs.com/HIT-ryp/p/10683111.html
Copyright © 2011-2022 走看看