class Parent { private void method1() { System.out.println("Parent's method1()"); } public void method2() { System.out.println("Parent's method2()");
method1();
}}class Child extends Parent { public void method1() { System.out.println("Child's method1()"); }
}public class test3 {
public static void main(String args[]) {
Parent p = new Child();
p.method2();
}
}上面的这段代码为什么当Parent 类里面的method1不是private的时候输出为Child's m
ethod1(),而当Parent类里面的method1是private的时候输出的为Parent's method1()
method1();
}}class Child extends Parent { public void method1() { System.out.println("Child's method1()"); }
}public class test3 {
public static void main(String args[]) {
Parent p = new Child();
p.method2();
}
}上面的这段代码为什么当Parent 类里面的method1不是private的时候输出为Child's m
ethod1(),而当Parent类里面的method1是private的时候输出的为Parent's method1()
我认为这类问题有这样几种:
1重载(overload):方法名称一定要一样.传入参数类型一定要不一样.发生在同一个类中.
2遮蔽(shadow):在对象继承的过程中,在子类中可以直接使用从父类所继承下来的属性和方法.但是如果在子类中又生命了相同名称的属性时,这时你直接使用就是用你自己的而不是父类的了.
3改写(override):对于方法就称为改写.对于属性叫遮盖.