提问人:Himanshu Rai 提问时间:3/28/2023 更新时间:3/28/2023 访问量:14
当我尝试使用对象引用编译器访问类的任何方法时,在类型转换对象引用工作时出现错误,为什么?
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?
问:
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 类已经是所有类的超类。
答: 暂无答案
评论