黑马程序员技术交流社区

标题: 实际参数列表和形式参数列表长度不同 [打印本页]

作者: 燃烧    时间: 2015-5-22 23:47
标题: 实际参数列表和形式参数列表长度不同
abstract class Employee
{
        /*private*/ String name;
        /*private*/ String id;
        /*private*/ double pay;
        Employee(String name,String id,double pay)
        {
                this.name = name;
                this.id = id;
                this.pay = pay;
        }

        public abstract void work();
       
}


//描述程序员。
class Programmer extends Employee
{
        Programmer(String name,String id,double pay)
        {
                super(name,id,pay);
        }
        public void work()
        {
                System.out.println("name="+name+",id="+id+",pay="+pay);
        }
}

//描述经理。
class Manager extends Employee
{
        /*private*/ int bonus;
        Manager(String name,String id,double pay,int bonus)
        {
                super(name,id,pay);
                this.bonus = bonus;
        }
        public void work()
        {
                System.out.println("name="+name+",id="+id+",pay="+pay+",bonus="+bonus);
        }
}



class  AbstractTest
{
        public static void main(String[] args)
        {
                Programmer p= new Programmer();
                p.name="zhangsan";
                p.id="F001";
                p.pay=5000;
                p.work();
        Manager q=new Manager();
                q.name="lisi";
                q.id="F002";
                q.pay=8000;
                q.pay=1000;
        q.work();
                System.out.println("Hello World!");
        }
}
运行时提示实际参数列表和形式参数列表长度不同D:\javacode\ydm\day09>javac AbstactTest.java
javac: 找不到文件: AbstactTest.java
用法: javac <options> <source files>
-help 用于列出可能的选项

D:\javacode\ydm\day09>javac AbstractTest.java
AbstractTest.java:82: 错误: 无法将类 Programmer中的构造器 Programmer应用到给定类
型;
                Programmer p= new Programmer();
                              ^
  需要: String,String,double
  找到: 没有参数
  原因: 实际参数列表和形式参数列表长度不同
AbstractTest.java:87: 错误: 无法将类 Manager中的构造器 Manager应用到给定类型;
        Manager q=new Manager();
                  ^
  需要: String,String,double,int
  找到: 没有参数
  原因: 实际参数列表和形式参数列表长度不同
2 个错误


作者: zxj35986847    时间: 2015-5-23 00:06
你这俩问题都是一个问题,没有定义空参构造器,  class Programmer extends Employee
{
        Programmer(String name,String id,double pay)
        {
                super(name,id,pay);
        }
        public void work()
        {
                System.out.println("name="+name+",id="+id+",pay="+pay);
        }
}
在这个方法里,你定义了带参的构造器,系统默认的空参构造器就不会在提供,Programmer p= new Programmer();这是创建对象,同时调用空参构造器,所以你要在上面的方法体内自己手写空参构造器,或者, ,Programmer p= new Programmer("zhangsan","F001",5000);这样就不会访问到空参构造器,而是访问带参构造器, 那个经理类也是同样的问题. 遇到这种问题按Ctrl +1  快捷键,会有提示.
作者: 燃烧    时间: 2015-6-13 22:37
zxj35986847 发表于 2015-5-23 00:06
你这俩问题都是一个问题,没有定义空参构造器,  class Programmer extends Employee
{
        Programmer(S ...

谢谢大神,按照你的提示已经解决问题
作者: 顾浩    时间: 2015-6-14 00:10
看着有点复杂的说
作者: zxj35986847    时间: 2015-7-13 21:47
燃烧 发表于 2015-6-13 22:37
谢谢大神,按照你的提示已经解决问题

:L:L:L别这么说,我可不是什么大神..

就是略知1 2 ,小菜一枚..






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2