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("狗吃骨头"); }}
展开
3个回答
展开全部
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访问权限的类,程序找不到入口
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询