java新手求助super和set给父类赋值!

classAnimal{privateintage;publicAnimal(intage){this.age=age;}publicvoidsetAge(intage)... class Animal
{
private int age;
public Animal(int age){
this.age = age;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
}

class Dog extends Animal
{

public Dog(int age){
super(age);------------为什么此处用setAge(age);不行呢???????
}
public int getAge(){
return super.getAge();
}
}
class Test6
{
public static void main(String[] args)
{
Dog dog = new Dog(4);
System.out.println(dog.getAge());

}
}
展开
 我来答
lawen
2014-10-27 · TA获得超过106个赞
知道答主
回答量:184
采纳率:0%
帮助的人:69.1万
展开全部
private int age;
说明age对于Dog子类是不可见的,因此你调用setAge是不行的
追问
class Dog extends Animal
{
int age;
public Dog(int age){
this.age=age;
}
public int getAge(){
return super.getAge();
}
}
我之前在子类里定义了它自己age,通过子类的构造函数给它自己赋值,编译的时候也提示我找不到Animal呢,此时我并没有用父类的age啊

大神求解???
追答
在dog子类中先调用父类的构造函数哦
public Dog(int age){
super(age);
this.age=age;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dnsxiu
2014-10-27 · 超过20用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:38.5万
展开全部
首先子类会调用父类构造方法新建弗雷对象并且保存父类对象引用,你父类没有无参数构造方法所以一定要一个参数
/**
**父类
**/
public class demo {
public demo(){

}
public demo(String age){
this.age = age;
}

private String age;

public String getAge() {
return age;
}

public void setAge(String age) {
this.age = age;
}
}

/**
**子类
**/
public class demo2 extends demo{
public demo2(){
super();
setAge("");
}

@Override
public String getAge() {
// TODO Auto-generated method stub
return super.getAge();
}
}
这样可以
追问
我刚刚加了个父类无参的编译通过了,为什么一定要有父类的无参构造函数呢,我的父类里有有参的构造函数了啊
追答
不是一定要无参数的,新建子类时候会先调用父类构造方法初始化父类,再初始化子类
super(age);
setAge(age);
也行啊
也就是说首先要创建一个父类对象接着才创建子类
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
善鹏海0Hc6ff
2014-10-27 · TA获得超过666个赞
知道小有建树答主
回答量:1108
采纳率:0%
帮助的人:557万
展开全部

class Animal

{

private int age;

public Animal(){

}

public Animal(int age){

this.age = age;

}

public void setAge(int age){

this.age = age;

}

public int getAge(){

return age;

}

}


class Dog extends Animal

{

public Dog(int age){

// super(age); //------------为什么此处用setAge(age);不行呢???????

super.setAge(age); //setAge(int)本是父类的方法,所以要这样调用,另外这样做还需要在父类当中声明一个无参的构造方法

}

public int getAge(){

return super.getAge();

}

}

public class Test6 

{

public static void main(String[] args) 

{

Dog dog = new Dog(4);

System.out.println(dog.getAge());


}

}


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式