当我尝试使用对象引用编译器访问类的任何方法时,在类型转换对象引用工作时出现错误,为什么?

When I try to access any method of a class using Object reference compiler results into an error while type casted Object reference works, why?

提问人:Himanshu Rai 提问时间:3/28/2023 更新时间:3/28/2023 访问量:14

问:

class X{

X(){

System.out.println("default constructor in class X");

}

public void m1(){

System.out.println("method m1 inside class X");

{

System.out.println("local block inside method m1 of class X");

}

}

{

System.out.println("instance block inside class X");

}

public void m2(){

System.out.println("method m2 inside class X");

{

System.out.println("local block inside method m2 of class X");

}

}

static{

System.out.println("static block inside class X");

}

public static void main(String arg\[\]){

/\*

X x=new X();

x.m1();

x.m2();

\*/

Object o=new X();

((X)o).m1();

((X)o).m2();

/\*

X x2=new Y();

x2.m1();

\*/

Object o1=new Y();

((X)o1).m1();   

}

}

 class Y extends X{

{

System.out.println("instance block inside class Y");

}

static{

System.out.println("static block inside class Y");

}

public void m1(){

System.out.println("method m1 inside class Y");

{

System.out.println("local block inside class Y");

}

{

System.out.println("local block inside method m1 of class Y");

}

}

}

当我使用 X 类的引用变量访问 Y 类的 m1 方法时,它工作正常,因为 X 和 Y 具有亚超级关系。但同时,当我尝试访问X类的方法m1或m2或Y类的相同方法m1时,引用Object class,我需要type-caste,我不明白,为什么?因为默认情况下,Object 类已经是所有类的超类。

对象 方法 转换 引用 超类

评论


答: 暂无答案