答案: C
A选项错误: 重载方法与方法的修饰符和返回值类型无关,只跟参数列表(包括参数类型、参数顺序、参数个数)和方法名有关。
B选项错误: 重写发生在子类与父类或者子类和接口之间,要求如下(简称:两同两小一大原则):
@Override注解时JDK自带的注解之一,用于重写的方法之上,如果方法不满足重写的条件,则编译不通过,在重写方法时,建议添加该注解,提高代码可读性。
D选项错误: 说法不正确,重写的方法需要遵循"两同两小一大"原则。
答案: C (重载只与方法的参数列表和方法名相关,与方法的返回值类型和方法修饰符类型无关)
答案: A
A选项正确: 静态方法可以被继承,但是不能被重写。因为静态方法是属于类级别的,在加载到JVM时就已经确定了,但重写是表现多态的一种方式,通过父类引用指向子类,然后在运行时再确定具体的类型从而执行不同的逻辑。
B选项错误: 静态方法和普通方法一样可以被public、protected,默认修饰符、private修饰。
C选项错误: 重载是表示相同的方法名有不同的参数列表的方法,与返回值类型和访问修饰符无关。
D选项错误: 静态方法是属于类级别的方法,可以通过类名和实例对象名调用(不推荐使用实例调用静态方法)。
public class DemoFather {
private String name;
public static void main(String[] args) {
DemoFather item = new DemoSon();
// here
}
}
class DemoSon extends DemoFather{
private String name;
public String output(){
name = "son";
return name;
}
}
答案: C (使用父类引用指向子类,想调用子类的方法,需要将父类类型强制转换成子类类型再进行调用)
class Parent {
public Parent() {
System.out.println("A");
}
}
public class Son extends Parent {
public Son() {
System.out.println("B");
}
public static void main(String[] args) {
Parent a = new Son();
a = new Parent();
}
}
答案: A B A (因为Son继承了Parent类,在加载Son类时会先去加载它的父类,所以会先执行父类的构造方法)
不积跬步,无以至千里;不积小流,无以成江海。今天播种努力的种子,总会有一天发芽!