有关java语言的一个问题,希望有高手帮助解答

[复制链接]
查看11 | 回复3 | 2008-7-22 17:13:23 | 显示全部楼层 |阅读模式
在java继承中,执行之类的构造方法之前,会先调用父类中没有参数的构造方法,说是为了帮助继承自父类的成员做初始化操作?不懂。。。为什么要初始化,我看没啥用啊。。。
如程序:分了三个类
package page132;
public class Person {

private String name;

private int age;

public Person()

{

System.out.println("调用了person的无参数构造方法");

}

public Person (String name,int age)

{

System.out.println("调用了person的有参数构造方法");

this.name=name;

this.age=age;

}

public void show()

{

System.out.println("姓名:"+name+"年龄"+age);

}
}
package page132;
public class Student extends Person {

private String department;

public Student()

{

System.out.println("调用了学生的无参数构造方法student()");

}

public Student (String name,int age,String dep)

{

super(name,age);

department=dep;

System.out.println("我是"+department+"的学生");

System.out.println("调用了学生的有参数的构造方法Student(String dep)");

}
}
package page132;
public class Untitled1 {

public static void main(String[] args) {

Student stu1=new Student();

Student stu2=new Student("李小双",23,"计算机系");

stu1.show();

stu2.show();

}
}
为什么有
调用了person的无参数构造方法
调用了学生的无参数构造方法student()
我是先赋值给学生的它却先调用person类,这个所谓初始化有何用。。。。

回复

使用道具 举报

千问 | 2008-7-22 17:13:23 | 显示全部楼层
你应该先理解继承的含义,它是讲:所有子类都继承了父类的所有非私有的方法与属性,即所有可见的特性。就拿车子来说,假设三轮车是父类sanLunCar(以后称A),然后子类电动三轮车eleSanLunCar(以后称B),A的公共属性如三个轮,方法如加速(),刹车()等等,你可以想象一下,电动三轮车在设计的时候如果连三轮车是啥都不知道,他怎样保证我造的这个是三轮车呢?所以B在实例的时候才需要先实例A,即有个参照,在拥有了父类的基本特征后,再构造自己的特有特征,如电动...太久没接触理论了,也许讲得有点乱。其实呢,你可以这样想,在程序中可不象现实可以不摆个A做参照,也可以直接造B。事实上他们在心中也先有个A的样子,然后才可以直接在这基础上造B,他
回复

使用道具 举报

千问 | 2008-7-22 17:13:23 | 显示全部楼层
意思是:因为你的子类继承了父类的成员变量;这些成员变量(父类继承的)要初始话,要父类的构造方法(没有参数的构造方法的默认的),如果子类构造方法指定了父类的哪个构造方法的话,那么就用指定的父类的构造方法
回复

使用道具 举报

千问 | 2008-7-22 17:13:23 | 显示全部楼层
哥们 你的student() 继承了 person 方法 student()就句有了person 的所有属性和方法。初始化 就是 把属性 初始化
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行