做网站从设计到上线流程,百姓国货app下载,建设工程合同约定的质量目标,商务网站建设内容做鼎桥笔试一个很有意思的点#xff0c;记录一下#xff1a;
1、考察的是方法重载#xff1a;方法重载是在一个类中定义多个具有相同名称但参数列表不同的方法的行为。编译器使用传递给方法的参数类型以及它们的数量来确定调用哪个方法。
首先说结果#xff1a;输出的是I…做鼎桥笔试一个很有意思的点记录一下
1、考察的是方法重载方法重载是在一个类中定义多个具有相同名称但参数列表不同的方法的行为。编译器使用传递给方法的参数类型以及它们的数量来确定调用哪个方法。
首先说结果输出的是I am a father。
public class Main {public static void main(String[] args){Father o new Child();change(o); // 这里o的编译时类型是Father所以会调用change(Father f)方法}private static void change(Father f){System.out.println(I am a father);}private static void change(Child c){System.out.println(I am a child);}
}class Father { }class Child extends Father { }2、考察的是多态多态是指可以将子类的对象引用赋给父类的引用变量并且可以使用这个父类引用来调用子类中重写的方法。
这个结果是Hello from Child。
public class Main2 {public static void main(String[] args) {Father f new Child();f.sayHello(); // 这里调用的是Child类中的sayHello方法因为f实际指向的是Child类的一个对象}
}class Father {public void sayHello(){System.out.println(Hello from Father);}
}class Child extends Father {Overridepublic void sayHello(){System.out.println(Hello from Child);}
}我的理解是
Father f new Child();
f是Father类是无容置疑的但是当他new了一个Child类时他可以调用Child类中重写的方法也就是f处于一个叠加状态他比单纯的Father类
Father f new Father();
多了一份改进能使用Child类的重写方法相应的他本身的被重写的方法也不能使用了
如果是单纯的Father类就是可以使用的
相比单纯的Child类
Child f new Child();
他不能使用Child类中别的未重写的方法
如下所示
public class Main {public static void main(String[] args) {Father f new Child();f.sayHello(); // 这里调用的是 Child 类中的 sayHello 方法因为它重写了 Father 类中的 sayHello 方法// f.sayChildSpecific(); // 这行会编译错误因为 sayChildSpecific 方法不存在于 Father 类中}
}class Father {public void sayHello(){System.out.println(Hello from Father);}
}class Child extends Father {Overridepublic void sayHello(){System.out.println(Hello from Child);}public void sayChildSpecific(){System.out.println(Hello from a method specific to Child);}
}尤其注意
Child f new Father();
是不被允许的父类可以涵盖子类但子类不能涵盖父类。 Father类和Child类还有Father类但new的Child类的关系应该是这样的
Father类和Child类有交集交集就是重写的部分Father类但new的Child类就是大部分的父类加上小部分的Child的集合。