通过向上转型可以调用父类中定义final的方法吗? /*class Parent{ private final void doit(){ System.out.println("父类doit"); } final void doit2(){ System.out.println("父类doit2"); } private final void doit3(){ System.out.println("父类doit3"); } } class Sub extends Parent{ public final void doit(){ System.out.println("子类doit"); } public final void doit3(){ System.out.println("子类doit3"); } } public class Test{ public static void main(String[]args){ Sub s=new Sub(); Parent p=s; p.doit2(); } }*/ ------解决思路---------------------- final修饰符定义一个方法,表示这个方法不能被重写,子类中仍然继承了这个方法,可以通过子类访问这个方法
public class Test{ public static void main(String[]args){ Sub s=new Sub(); Parent p=s;// 用一个父类的引用引用一个子类的实例 p.doit2();//变量p声明为Parent类型,Parent类定义了doit2(),这个方法的修饰符final,说明不能被重写,编译器就定位到这个方法调用 }