1.如果在父类中调用DoXX会怎样呢? : 根据当前对象决定调用父类还是子类DoXX。2.是否调用已经被重写的子类方法? 如果是父类,不会调用子类方法。3.如果是的话,是哪一个?怎样区分? 根据当前对象的实例 Object instance of Parents 判断,是父类还是子类
测试: public class Parent { public void getDemo() { System.out.println("this is parent"); } }public class Child extends Parent{ public void getDemo() { System.out.println("this is Child"); }} public class TestExtends { public static void main(String[] args) { Child cl = new Child(); cl.getDemo();
class A{ public void method(){System.out.println("Class A");} }class B extends A{ public void method(){ System.out.println("CLass B"); } }public class test{test(A a){ a.method(); } public static void main(String[] args){ test t=new test(new A()); t=new test(new B());
而且,我都看到你都用Structs了,有一定的JAVA基础,写测试的技巧应该要会的了。
百度上随便一搜索:http://hi.baidu.com/wqc1012/blog/item/6837f083ef56e1b66d811966.html
2.是否调用已经被重写的子类方法?
3.如果是的话,是哪一个?怎样区分?
如果在父类中调用,只执行父类里的方法,和子类无关,
Parent p=new Child();
p.doXXX
调用的是父类的doxxx
Child1 c1=new Child();
调用的是Child1的doxxx
Child2 c2=new Child();
调用的是Child2的doxxx其实关键是看子类对象传给谁,传给父类就掉父类,传给父类的某个实现如Child1就调用Child1,类推Child2就调用Child2
但在子类中可以用super.doxx调用到父类的方法。
根据当前对象决定调用父类还是子类DoXX。2.是否调用已经被重写的子类方法?
如果是父类,不会调用子类方法。3.如果是的话,是哪一个?怎样区分?
根据当前对象的实例 Object instance of Parents
判断,是父类还是子类
public class Parent {
public void getDemo() {
System.out.println("this is parent");
}
}public class Child extends Parent{
public void getDemo() {
System.out.println("this is Child");
}}
public class TestExtends {
public static void main(String[] args) {
Child cl = new Child();
cl.getDemo();
Parent p = new Parent();
p.getDemo();
Parent pl = new Child();
pl.getDemo();
}
}
父类无法调用子类方法,他根本不知道,也不用关心自己是否有儿子,儿子长什么样,反之则可以(super.doxxx())。
p.doXXX
调用的是父类的doxxx
Child1 c1=new Child();
调用的是Child1的doxxx
Child2 c2=new Child();
调用的是Child2的doxxx
我顶22楼的 ,要调哪个方法肯定是看你的对象是什么 既然你写this或者不写那你的对象就是父类 那肯定调的是父类的方法啊
System.out.println("parent");
}
}public class Child extends Parent { public void method() {
System.out.println("child");
}
public static void main(String[] args) {
Parent parent = new Parent();
parent.method();
Parent cParent = new Child();
cParent.method();
Child child = new Child();
child.method();
}
}
自己去跑看。
可以创建一个父类的对象指向某个子类的引用,这样就可以调用子类的方法了。
如:
Parent p=new ChildFirst();
1.继承
2.重写
3.父类引用指向子类对象
多态不是调用子类的方法的吗?
public void method(){System.out.println("Class A");}
}class B extends A{
public void method(){
System.out.println("CLass B");
}
}public class test{test(A a){
a.method();
}
public static void main(String[] args){
test t=new test(new A());
t=new test(new B());
}
}