stanleyqian
中级会员
 
中级会员
UID 29826
精华
0
积分 298
帖子 623
金钱 298 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2004-7-4 来自 Melbourne, Australia.
状态 在线
|
[推荐阅读] 怎样用php生成下面的树状菜单??
补充说明:
1) 虽然一个文件中可以写多个Class,但只能是其中一个含有main();
程序编译好后,程序就只执行main()中的内容。
所以,注释掉// fh.Fish()后,导致main()就执行了一行:
Fish fh=new Fish(); //创建一个Fish对象,并分配内存给它。
之后,main()就结束了,也就是整个程序结束了。
2) 如果不注释掉 fh.Fish(),那么,Fish对象fh,就调用了Fish类的一个方法Fish(),如下:
void Fish()
{
// super.Animal();
System.out.println("Fish construct");
}
再进一步,如果没有注释掉super.Animal(),那此时这里的Fish()方法中又调用了它的父类的方法Animal();
3)如上回复所说的,去掉构造函数前的void。
以上(1)和(2),我是根据你没有构造函数来说的,因为你认为的“构造函数”前面都有void,但构造函数是不容许加返回类型的,所以你写的那些就全变成类的普通方法了。你现在的是:真正的构造函数是用默认的,也就是空的。
注意:去掉void后,你必须拿掉:
super.Animal(); 和 fh.Fish(); 因为他们已经不是类的成员方法了。
构造函数是在类实例化(创建新的对象)时候被调用的。
根据你的原来意思,可能最后的代码是:
class Animal
{
int height,weight;
Animal()
{
System.out.println("Animal construct");
}
}
class Fish extends Animal
{
int height;
Fish()
{
System.out.println("Fish construct");
}
}
class Integration
{
public static void main(String args[])
{
Fish fh=new Fish();
}
}
|  Stanley Qian at Melboure, Australia |
|