• 雨课堂知识点总结(十四)


    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

  • 相关阅读:
    在网上如何找靠谱的兼职?
    Amphorae 与 Octavia Worker 的安全通信实现
    idea遇到XXXXXXXX.java文件上出现小叉号
    2019创业做哪方面,有什么好的建议吗?
    投资理财财经 现在每个月可以抽出2000元的闲钱,投资什么项目比较好?
    开水果蔬菜超市利润大吗?
    理财能不能发家致富?
    不想打工了,手里有10万,想回农村老家创业,却不知道做什么,请各位指点迷津,谢谢?
    为什么很多人说现在做什么生意都不好做?
    ylbtech-SubwayNav(地铁线路导航)-数据库设计
  • 原文地址:https://www.cnblogs.com/HIT-ryp/p/10683111.html
Copyright © 2020-2023  润新知