Java

Java面试题

# 疑问

  1. 修饰符,访问控制?

  2. 装箱、拆箱?

  3. 多态?

    ​ 指向子类的父类引用由于向上转型了,它只能访问父类中拥有的方法和属性,而对于子类中存在而父类中不存在的方法,该引用是不能使用的,尽管是重载该方法。若子类重写了父类中的某些方法,在调用该些方法的时候,必定是使用子类中定义的这些方法(动态连接、动态调用)。

    ​ 形成条件:继承、重写(不是重载)、向上转型

    ​ 对于Java而言,它多态的实现机制遵循一个原则:当父类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在父类中定义过的,也就是说被子类覆盖的方法。

  4. 转型?

    向上转型:多态本身就是子类类型向父类类型向上转换的过程,这个过程是默认的。当父类型引用指向一个子类对象时,便是向上转型。

    向下转型:父类类型向子类类型向下转换的过程,这个过程是强制的。 一个已经向上转型的子对象,将父类引用转为子类引用,可以使用强制类型转换的格式,便是向下转型。

    为什么要转型?

    ​ 当使用多态方式调用方法时,首先检查父类是否有该方法,如果没有,则编译报错,也就是说,多态不能调用子类拥有而父类没有的方法,这也就是 多态的不足,这就需要向下转型,调用子类独有的方法。

  5. ArrayList<E>, E为引用类型,int --> Integer...

    ArrayList<String> arr = new ArrayList<String>();
    //添加元素
    arr.add(e);
    //访问元素
    arr.get(index);
    //修改元素
    arr.set(index, newValue);
    //删除元素
    arr.remove(index);
    //数组长度
    arr.size();
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
  6. 泛型?

  7. 序列化?