class A
{
String s = "class A's attribute";
}
class B extends A
{
String s = "class B's attribute";
void method()
{
System.out.println("method in B");
}
public static void main(String []args)
{
A a = new B();
System.out.println(a.s);
                a.method();//a是A的实例,而A中并没有这个方法,因此a.method是错的。除非在A中声明此方法,可以用接口或者抽象函数方式,但是对于A应该做相应的修改。
}
}

解决方案 »

  1.   

    如下就是三种解决方案:
    abstract class A
    {
    String s = "class A's attribute";
             abstract void method();
    }
    或者:
    interface A
    {
    String s = "class A's attribute";
             void method();
    }
    或者: 
    class A
    {
    String s = "class A's attribute";
             void method(){};//注意这个{}
    }
      

  2.   

    用一个父类来new一个子类,再使用一个子类的方法,当然会出现问题。
    它的实质还是一个父类,里面方法都没有,所以会出错,你试试楼上的
    代码
      

  3.   

    对了,忘了说明,第二种方案对于定义A是可以的,但是B也要做相应的修改,如下:
    class B implements A         //注意这里!
    {
    String s = "class B's attribute";
    void method()     //这里实现接口
    {
    System.out.println("method in B");
    }
    public static void main(String []args)
    {
    A a = new B();
    System.out.println(a.s);
                      a.method();
    }
    }
    另外如果有问题,可能会出在访问权上,即是否要添加public修饰符,自己试着改改就行了。