public class A { public void login(String name){
System.out.println("A class");
}
}public class B extends A {

public  void login(int i,String name){
System.out.println("Bclass");
}
public static void main(String[] args) {
    A a=new B();
a.login(123,"jfdkjfkd");
} }
在类B重调用a.login时候报错
这种 调用好像和接口很一样,为什么接口就可以调用B的login方法

解决方案 »

  1.   

    搞不懂你要做什么
    login(String name)你调用login(123,"jfdkjfdk")
    当然出错了参数问题
      

  2.   

    a是A类型,哪来的那个login(123,"jfdkjfdk")方法啊 
      

  3.   

    楼上的,其实我是想试验一下重载,但是用a.login("jfdkjfkd"),就会打印Aclass,为什么a.login(123,"jfdkjfkd")不打印Bclass?
      

  4.   

    因为编译器认为A   a不存在login(int   i,String   name)这样的方法!A a实际上是什么类型编译器是不可能知道的,所以它只认为它是A类,然后在A中找不到login(int   i,String   name)方法,所以编译不通过
      

  5.   

    (B(a)).login(123,"jfdkjfkd"); 
    这样行不
      

  6.   

    你把B的实力赋给了A,所以a只能调用A中的方法,调用其他的就会出错!
      

  7.   

    public class Test{
    public static void main(String[] args)
    {
    A a = new A();
    a.login("eeee");
    B b = new B();
    b.login("qqqq");
    b.login(123,"qqqq"); A a1 = new B();
    a1.login("qqqq"); B b1 = new B();
    b1.login("qqqq");
    }

    }
    class A{
    public void login(String name){
    System.out.println("A class");
    }
    }class B extends A{
    public void login(int i,String name){
    System.out.println("B class");
    }
    }====
    运行结果:
    D:\>javac Test.javaD:\>java Test
    A class
    A class
    B class
    A class
    A class