使用super()调用父类构造函数,导致属性赋值失败
public abstract class Animal {
private String name;
private int age;
public Animal(){
}
public Animal(String name, int age) {
this.age=age;
this.name=name;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return this.age;
}
public void setAge(int age) {
this.age = age;
}
}public class Cat extends Animal{
private String name;
private int age;
@Override
public String getName() {
return name;
}
@Override
public void setName(String name) {
this.name = name;
}
@Override
public int getAge() {
return age;
}
@Override
public void setAge(int age) {
this.age = age;
}
public Cat(){
}
public Cat(String name,int age){
// this.name=name;
// this.age=age;
super(name,age);
}
}public class Test {
public static void main(String[] args) {
Animal one=new Cat("huahua",10);
System.out.println(one.getName());
System.out.println(one.getAge());
Cat cat=(Cat)one;
System.out.println(cat.getName());
System.out.println(cat.getAge());
}
}运行结果为:
null
0
null
0
这是怎么回事
35
收起
正在回答
3回答
同学你好,使用private修饰,this.name=name是给本类中的name属性赋值,子类中调用父类构造方法也不能给子类对象赋值。
祝学习愉快
java工程师2020版
- 参与学习 人
- 提交作业 9410 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星