java的多态、动态绑定 的问题
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
Class A 's method1
当我把classA中方法void method1()的private除掉后结果就是
class A
Class B 's method1
请大家解释一下2中结果的原理
------解决方案--------------------没去掉是私有 就读不到private void method1()
去掉就能读
------解决方案--------------------作用域public private proteced 默认。
默认的情况下是可以被继承的。而private是私有的。
将父类引用指向子类对象时。父类的私有方法肯定还是父类自己的。调用父类被继承的方法是子类实现的方法体内容
------解决方案--------------------本例可以理解成这样,
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{
default void printA(){
System.out.println("class A");
method1();
}
private void method1(){
System.out.println("Class A 's method1");
}
}
class B extends A{
default void printA(){
System.out.println("class A");
method1();
}
default void method1(){
System.out.println("Class B 's method1");
}
}
不知道这样写出来lz明白了么