当前位置:编程学习 > JAVA >>

java中的继承

abstract class Person {
private String name;
private int age;
private String id;
private double mouth;
Person(String name,int age,String id,double mouth){
this.name=name;
this.age=age;
this.id=id;
this.mouth=mouth;
}
abstract void work();
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return age;
}
public void setId(String id){
this.id=id;
}
public String  getId(){
return id;
}
public void setMouth(double mouth){
this.mouth=mouth;
}


}
***************************************************************************
public class Manager extends Person{
Manager(String name,int age,String id,double mouth){
super(name,age,id,mouth);
}
public void work(){

}

}
为什么子类继承父类,子类的构造函数就一定要带参数呢? --------------------编程问答-------------------- 楼主,你在子类构造方法中用了super(参数列表)方法;这个方法代表调用父类与之参数对应的构造方法,父类的构造方法有参数,所以子类构造方法必然有参数啊。如果在父类有无参构造方法,那么子类构造方法就可以这样写
Manager() {
  super();
}
这样就不需要参数了,楼主该看看有关继承的一些基础知识 --------------------编程问答-------------------- 因为你父类没有无参的构造函数,所以子类只继承了带参数的父类的构造函数 --------------------编程问答--------------------
引用 1 楼 wuyanxue 的回复:
楼主,你在子类构造方法中用了super(参数列表)方法;这个方法代表调用父类与之参数对应的构造方法,父类的构造方法有参数,所以子类构造方法必然有参数啊。如果在父类有无参构造方法,那么子类构造方法就可以这样写.....
这样就不需要参数了,楼主该看看有关继承的一些基础知识

子类调用父类缺省构造函数,在抽象类(abstract)中是个特例.在一般类的继承中,缺省构造函数是不能调用的。
--------------------编程问答-------------------- lz的写法是特例,就是不行 --------------------编程问答-------------------- 楼主要明白一点,当一个类自定义构造函数进行初始化后,该类本身存在的默认空参数的构造函数就没有了。
楼主程序中的父类自定义了有参数的构造函数,那么子类空参数构造函数就不行了,必须和父类中的构造函数一样,如果父类中是没有参数的构造函数,则子类中也要和父类相同! --------------------编程问答-------------------- 你代码中子类的构造方法的作用是调用父类构造方法,初始化父类,而你的父类构造方法要求带上几个参数,理所当然地必须带上参数。 --------------------编程问答--------------------
引用 1 楼 wuyanxue 的回复:
楼主,你在子类构造方法中用了super(参数列表)方法;这个方法代表调用父类与之参数对应的构造方法,父类的构造方法有参数,所以子类构造方法必然有参数啊。如果在父类有无参构造方法,那么子类构造方法就可以这样写Java code?123Manager() {  super();}这样就不需要参数了,楼主该看看有关继承的一些基础知识


呵呵,是啊,如果你的父类没有参数而你的子类使用 super()硬是要写参数,你觉得是对的吗? --------------------编程问答-------------------- (子类继承了父类的构造方法?),你的父类构造方法有参数,子类不能调用父类默认的无参的super(),只能super(参数),那么子类也只好需要参数了。 --------------------编程问答-------------------- 子类继承父类,连着它的构造方法也会继承,而它父类的构造方法是带参数的,所以子类不能调用父类默认的无参构造函数,所以子类的构造函数也需要参数。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,