java实际参数列表和形式参数列表长度不同!

/*猫狗案例具体事物:猫,狗共性:姓名,年龄,吃饭*/classTestDemo{publicstaticvoidmain(String[]args){Animala=n... /*猫狗案例具体事物:猫,狗共性:姓名,年龄,吃饭*/class TestDemo{ public static void main(String[] args){ Animal a = new Cat(); a.setName("猫"); System.out.println(a.getName()); Animal a1 = new Cat("猫",10); System.out.println(a1.getName()+"****"+a1.getAge()); System.out.println(""); }}abstract class Animal{ private String name; private int age; public Animal(){ } public Animal(String name,int age){ this.name = name; this.age = age; } public void setName(String name){ this.name = name; } public String getName(){ return this.name; } public void setAge(int age){ this.age = age; } public int getAge(){ return this.age; } public abstract void eat();}class Cat extends Animal{ public void eat(){ System.out.println("猫吃鱼"); }}class Dog extends Animal{ public void eat(){ System.out.println("狗吃骨头"); }} 展开
 我来答
ch___hc
推荐于2018-03-15 · TA获得超过138个赞
知道答主
回答量:56
采纳率:100%
帮助的人:20.6万
展开全部

1、修改两处程序可以运行:

   ①、其他代码不变,修改Cat类如下:

class Cat extends Animal {
        //增加无参构造器
        public Cat(){}
        //增加名字和年龄的构造器
        public Cat(String name, int age){
            super(name,age);
        }
        public void eat() {
            System.out.println("猫吃鱼");
        }
}

②、其他代码不变,修改TestDemo类为public访问权限:

public class TestDemo {


2、说明:
   ①、new关键字调用构造器可以创建对象,你原来的代码Animal a = new Cat();处没有报错是因为系统会默认提供一个无参构造器。到了Animal a1 = new Cat("猫",10);处报错是因为这个构造器找不到。你需要手动为它添加。

  ②、一个文件中最好只定义一个类,且为public访问权限,且文件的名称和类名相同。如果没有public访问权限的类,程序找不到入口

  

lifeprogramer
2016-11-02 · 超过24用户采纳过TA的回答
知道答主
回答量:138
采纳率:0%
帮助的人:36.9万
展开全部
要多态吧

CAT类写SUPER()
追问
求  改写后的代码 —__—!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2016-11-02
展开全部
在Cat类中写构造函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式