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

    3.4Object-Oriented Programming(OOP)

    1.关于static和final的说法,正确的是:
    static类型的方法,调用时无需创建类的实例对象,可直接通过类名使用
    被声明为final类型的类,无法从中派生出子类
    被声明为final类型的方法,无法在子类中被override
    类A的static方法中不能直接调用A的instance方法(而是要new一个A的对象再调用);A的instance方法中可以直接调用A的static方法
    不正确:
    一个变量被声明为final,意味着它在被首次赋值之后,其内容就不能再变化

    2.关于Java interface的说法,正确的是:
    不能有constructor(构造方法)
    不能有final方法
    不能有private方法
    可以有static方法
    可以有fields(属性)
    解析:
    可以有属性的,都是public static final的

    3.关于class和interface的说法,不正确的是:
    一个类只能implements一个接口
    一个类不能同时extends另一个类和implements一个接口
    正确的:
    一个接口可以extends一个或多个其他接口
    一个类implements了一个接口,意味着它必须要实现该接口中的所有方法
    一个类除了实现其implements的接口中的方法,还可以增加新的方法

    4.某方法的定义是public int getLength (List <String> list, boolean bFliter),对该方法合法的重载:
    private int getLength (List<String> list, String regex)
    public Integer getLength (List<String> list)
    public int getLength (List<String> list) throws IOException
    不合法的:
    public void getLength (List<Object> list, boolean bFliter)

    5.关于Java OOP中override 和overload的异同,说法正确的是:

    前者的参数列表不能改变,后者的参数列表必须发生变化

    前者的返回值类型不可变化,后者的返回值类型可以变化

    前者的类型检查发生在run-time,后者的类型检查发生在compile-time

    在子类里override父类方法时,@override不是必须的

    6.class Car{

    public String refuel()

    { return "R";}

    }

    Class Tesla extends Car{

    public String refuel(){return "C";}

    public String refuel(double price)

    {return "p";}

    }

    无法通过static type checking的是

    Car c = new Car();

    c.refuel(10);

    Car c = new Tesla();

    c.refuel(10);

    7.

    class Car{

    public String refuel()

    { return "R";}

    }

    Class Tesla extends Car{

    public String refuel(){return "C";}

    public String refuel(double price)

    {return "p";}

    }

    能获得内容为"C"的字符串是

    Car c = new Tesla();

    c.refuel();

    Tesla t = Tesla();

    t.refuel();

    8.类A和B,BextendsA,二者分别有一个apply(A a)方法,具有不同的返回值类型

    假如

    A a = new A();

    B b = new B();

    下面正确的是:

    b.apply(a)与((B)b).apply((B)a)不等价

    注意:将a向下强转做不到,运行时候会抛出异常ClassCastExcepion

    ((A) b).apply( a) 与b.apply(a)是等价的

    因为B是A的子类,所以b必然是A的实例,所以将b转成(A)b,本质上还是等价的

    9.关于OOPpolymorphism(多态)的各选项中:

    generics和overriding不是同义词

    下面的是同义词:

    subtype polymorpgism 和 inclusion polymorphism

    Parametric polymorphism 和 generics

    ad hoc polymorphism 和function overloading

  • 相关阅读:
    scroll
    "严格模式" use strict 详解
    thymeleaf 模板布局
    前端性能优化
    原生的强大DOM选择器querySelector
    thymeleaf 基本语法
    读书笔记JavaScript中的全局对象
    JavaScript中getBoundingClientRect()方法详解
    JavaScript 中的内存泄漏
    jsonp 跨域原理详解
  • 原文地址:https://www.cnblogs.com/HIT-ryp/p/10607281.html
Copyright © 2011-2022 走看看