目录
面试题2.13 Overload方法是否可以改变返回值的类型?
面试题2.16 在 Java 中定义⼀个不做事且没有参数的构造方法的作用
面试题2.17 创建一个子类对象,请写出:父类静态代码块,父类构造方法,父类代码块,子类代码块,子类构造,子类静态代码块。这六个对象的执行顺序
面试题2.18 Java中访问修饰符有哪些? 作用域public,private,protected,以及不写时的区别
面试题2.20 抽象类和接口的区别?什么时间考虑用抽象类,什么时间考虑用接口?
面试题2.21 接口是什么?为什么要使用接口而不是直接使用具体类?
面试题2.22 什么是类?什么是对象?什么是接口?接口和类的继承有什么本质区别
面试题2.12 Overload和Override的区别
【技术难度: 2 出现频率:2 】
小技巧:按方法声明(返回值类型 方法名 (参数列表) throws 异常)来说两者的区别
方法重载 (Overload),发生在同一个类中:
1. 方法名相同;
2. 参数列表不同 (参数类型,参数顺序,参数个数);
3. 与权限修饰符,返回值类型无关。
方法重写 (Override),发生在子类中:
1.方法名与父类方法名相同;
2.参数列表与父类方法相同(参数类型,参数顺序,参数个数);
3.返回值类型与父类方法相同或是其子类;
4.访问权限不能严于父类方法;
5.抛出的异常与父类相同或是其子类。(抛出的异常不能多于父类)
面试题2.13 Overload方法是否可以改变返回值的类型?
【技术难度: 2 出现频率:2 】
Overload重载方法可以改变返回值类型。不根据返回类型来区分重载。
面试题2.14 为什么方法不能根据返回类型来区分重载?
【技术难度:2 出现频率:2 】
方法重载只和方法名、参数列表有关,与返回值无关。
在Java中,方法的名称和参数列表共同构成了方法的签名,不包括返回值,而编译器用这个签名来确定要调用哪个方法。所以……
面试题2.15 构造器可不可以被重载或重写?
【技术难度:2 出现频率:2 】
构造方法可以重载;但不可以被子类重写,因为Java规定子类不可继承父类构造方法,只能通过super关键字来调用父类构造器。(不可继承父类构造方法?)
面试题2.16 在 Java 中定义⼀个不做事且没有参数的构造方法的作用
【技术难度: 2 出现频率:1 】
如果不在子类构造器中显示调用父类的构造方法,编译器就会自动调用父类的无参构造方法。所以定义类时最好还是带上一个无参构造方法。
第一层:
如果子类调用到了父类无参构造方法时,父类得有无参构造方法,否则报错。后面要学习的框架就会经常用到无参构造方法。
第二层:
比如这种情况,若父类中只定义了有参构造方法,而在⼦类的构造方法中又没有用super来指定调用父类中特定的有参构造⽅法,就会默认调⽤⽗类的无参构造方法。如果父类没有无参构造方法,此时编译时将发⽣错误,因为 Java 程序在⽗类中找不到无参构造方法。
面试题2.17 创建一个子类对象,请写出:父类静态代码块,父类构造方法,父类代码块,子类代码块,子类构造,子类静态代码块。这六个对象的执行顺序
【技术难度: 2 出现频率: 1 】
1.父类静态代码块;
2.子类静态代码块;
3.父类实例代码块;
4.父类构造方法;
5.子类实例代码块;