我刚开始学java,到继承这里看书上一个例程,试了一下却发生了以下问题:
--------------------Configuration: <Default>--------------------
java.lang.NoSuchMethodError: main
Exception in thread "main" 
Process completed.
以上是在Jcreat Pro4中运行的结果,JDK安装正确,系统环境变量的设置也没有问题,所以请各位高手帮忙指点迷津,不胜感激,谢谢!
源文件如下:
//extend.java
class A
{String a="class A";
}
class B extends A
{String b="class B";
}
public class extend
{public static void main (String[] args) {
 A a1,a2=new A();
 B b1,b2=new B();
 a1=b2;
 b1=(B)a2;
 System.out.println(a1.a);
 System.out.println(b1.b);
 }
}

解决方案 »

  1.   

    这个是cast的错误
    a2是A型的对象,不能赋给一个B的引用
      

  2.   

    强制转换只能在下面的情况才行A a1=new B();
    B b1=(B)a1;就是说一个引用只能指向同样的对象,或是子类的对象,instanceof返回true的才行
      

  3.   

    zn_xt() 正解
    A a1,a2=new A();
     B b1,b2=new B();
    a1=b2
     b1=(B)a2
    ==============
     a1=b1;之所以正确是应为B是A的子类,A的对象可以指向子类对象的引用,例如,你可以
    A a=new B();这叫向上转型,a 可以强制转换为B。
    而对于b1=(B)a2,可以理解为a2的范围比b1 大,子类对象可以泛化为超类,而反过来就不行。