import java.util.ArrayList;
import java.util.List;
public class Test2 {
public static void main(String[] args) {
A a = new B();
a.printA();
}
}
class A{
void printA(){
System.out.println("class A");
method1();
}
private void method1(){
System.out.println("Class A 's method1");
}
}
class B extends A{
void method1(){
System.out.println("Class B 's method1");
}
}
class A
import java.util.List;
public class Test2 {
public static void main(String[] args) {
A a = new B();
a.printA();
}
}
class A{
void printA(){
System.out.println("class A");
method1();
}
private void method1(){
System.out.println("Class A 's method1");
}
}
class B extends A{
void method1(){
System.out.println("Class B 's method1");
}
}
情况一
class A
Class A 's method1
情况二
当我把classA中方法void method1()的private除掉后结果就是class A
Class B 's method1
首先,肯定都是class A,因为只有A类中才会有printA的方法。
其次,在printA中的method1方法,类型是A,实例是B,第一它要符合A类型 ,才能有多态的情况。
当为private时那么它是A类型,没有发生重写,因此调用的是 Class A 's method1
当去掉private时那么它是A类型,发生了重写,因此是动态绑定