java新手求助super和set给父类赋值!
{
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());
}
} 展开
说明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;
}
/**
**父类
**/
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);
也行啊
也就是说首先要创建一个父类对象接着才创建子类
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());
}
}