3.定义一个抽象类AbsAnimal,要求如下 (1)包括属性name,weight,color; (2)定义其有参构造方法; (3)定义受保护的run方法,功能是打印输出"Animal run fastly"; (4)在main方法里实例化抽象对象a AbsAnimal a = new AbsAnimal(….) ,想一想为什么会报错?如果报错注释掉该语句。
时间: 2024-02-23 10:59:20 浏览: 52
好的,让我来回答你的问题。
首先,以下是定义一个抽象类AbsAnimal的代码:
```
public abstract class AbsAnimal {
protected String name;
protected double weight;
protected String color;
public AbsAnimal(String name, double weight, String color) {
this.name = name;
this.weight = weight;
this.color = color;
}
protected void run() {
System.out.println("Animal run fastly");
}
}
```
其包括属性name,weight,color,定义其有参构造方法,以及定义受保护的run方法,功能是打印输出"Animal run fastly"。
在main方法里实例化抽象对象a AbsAnimal a = new AbsAnimal(….)会报错是因为抽象类是不能被实例化的。抽象类是用来被继承的,子类需要实现抽象方法,才能被实例化。
如果想要实例化一个对象,需要定义一个非抽象的子类,并重写抽象方法,例如:
```
public class Dog extends AbsAnimal {
public Dog(String name, double weight, String color) {
super(name, weight, color);
}
@Override
protected void run() {
System.out.println("Dog run fastly");
}
}
```
然后,就可以实例化一个Dog对象了:
```
AbsAnimal a = new Dog("Bobby", 10.5, "brown");
```
这样就不会报错了。
阅读全文