程序1
class C{
void callme(){System.out.println("abd");}
}
public class q extends C{void metoo(){
System.out.println("inside");}
public static void main(String arg[]){
C c=new q();
c.metoo();
}
}程序2
class test{
public static void main(String[] args)
{Object obj=new Outer().make(47);
System.out.println(obj.tostring());
}
}
class Outer
{
private int size=5;
public Object make(int localvar)
{
final int finallocalvar=99;
class Inner{
public String tostring(){
return(size+finallocalvar);
}
}
return new Inner();
}
}
程序1不能通过编译 而程序2可以编译
我想问一下 2个程序都是执行了向上转型,既然第一个程序中因为类C中没有metoo方法,使得c.metoo()语句不能通过编译, 那程序2中类Object中也没有tostring方法,为什么编译又可以通过呢 也就是说Object类对象obj调用子类Inner的tostring方法可以通过编译, 这不是和程序1相矛盾吗