java的问题 为什么主函数可以不在与文件名相同的类中,而在其子类中

public class Person
{
static int count=0;
Person(){
count++;
}
public void Show()
{
System.out.println("本类名="+this.getClass().getName()+";");
System.out.println("父类名="+this.getClass().getSuperclass().getName());
System.out.println("person.count="+this.count);
System.out.println("student.count="+Student.count);
}
}
class Student extends Person
{
static int count=0;
Student(){
super();
count++;
}
public void Show()
{
super.Show();
System.out.println("本类名="+this.getClass().getName()+";");
System.out.println("父类名="+this.getClass().getSuperclass().getName());
System.out.println("Student.count="+count);

}
public static void main(String[] arge)
{
Person pe=new Person();
pe.Show();
Student stu=new Student();
stu.Show();
}
}

一个文件下可以有多个类,有多少个类编译就生成多少个.class文件,但是有且只能有一个public修饰的类,并且文件名必须与public修饰的这个类名相同(包过大小写)。一般来说,一个文件里放一个类的。主函数是只是保证类执行是只有唯一入口,与在哪个类中没有关系
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-05-31
一个.java文件的名称与文件里面 的public class的名称一样,而且有且只能有一个public class 。main方法也必须在public class中。
Student中的main只是作为一个类方法与入口函数main()的定义相同,但不是通常意义上的程序入口函数。你会发现这个类是没有办法执行的,因为public class中没有main方法。追问

表示运行的很正常,所以才问

第2个回答  2013-05-31
主函数的作用只是保证整个类执行时只有唯一的入口,与他在整个类所处的位置无关
第3个回答  2013-05-31
运行程序时,虚拟机会找main()方法
然后从里面的第一行开始执行,main()里面是具体的逻辑,但是main()在哪儿无所谓,有main()的类可以执行,没的不能执行。没main()的类是被用来调用的,希望你能理解

...为什么在父类中定义了一个构造函数,而在其子类中却一定的要写一个...
子类不一定非要写一个构造函数。(1)如果你有需要加入参数来构造一个类实例的话,那你就可以写一个,但是写前需要第一句是“super();”这是调用父类的构造方法。(2)如果你没有特定的要求,那就可以不写,java虚拟机会在编译的时候给你自动添加一个无参数的构造方法。下面是写构造方法的注意事...

java提示公用类必须在自己的文件中定义怎么修改
1、把文件名修改同公共类一样的名字。2、把类名修改成同文件名。3、子类继承父类时。不需要再用public修饰。同一文件中,不能有多于一个public声明的类出现,可以将其中一个public去掉,即不加任何修饰符,通常称为“默认访问模式”,在该模式下,这个类只能被同一个包中的类访问或引用,这一访问特...

java中的子类和父类是不是一定要在同一个包中
肯定不用在一个包里的,引用下就行了,一般放一个包里是为了容易理解.以前老师说过,JAVA里所有的类都是继承自Object这个类的,也就是说它是所有类的父类,也就是说你不继承某个类的话就是默认继承了Object类,而我至今不知道它在哪个包里...所以...不用在一个包里!最后祝您学业有成!

Java的不同类中可以有相同的参数名或者变量名吗?
可以的,这是JAVA多态性的一点。多态性主要表现在如下两个方面:(1)方法重载.通常指在同一个类中,相同的方法名对应着不同的方法实现,但是方法的参数不同。(2)成员覆盖.通常指在不同类(父类和子类)中,允许有相同的变量名,但是数据类型不同;也允许有相同的方法名,但是对应的方法实现不同。参考资料...

JAVA中的一个小问题
java编译器当然会阻止这种情况的发生。第2行会导致一个编译错误。总之,如果Foo是Bar的一个子类型(子类或者子接口),而G是某种泛型声明,那么G<Foo>是G<Bar>的子类型并不成立!! 这可能是你学习泛型中最难理解的部分,因为它和你的直觉相反。这种直觉的问题在于它假定这个集合不改变。我们的直觉认为这些东西都不可...

关于Java构造方法的一个问题
下面程序已经编译通过,里面的public void test()方法就是个普通方法,但可以和类重名不是:public class test { public test() { \/\/这是一个空参构造方法 System.out.println("空参构造方法");} public test(String str) { \/\/这是一个有参构造方法,在这个方法内调用了上面的空参构造方法。thi...

java中父类跟子类能写在同一个文件夹里吗?
可以。一个java文件允许里面包含许多类,但只能有一个public类,且文件名要求与public类类名一致,只要保持这个原则,父类子类写在一个文件内是可以的,但实际开发中,我们建议一个文件只写一个类。父类跟子类也能写在同一个文件夹里,同一文件夹内是说明他们是在同一个包里面。

java在子类中被覆盖 是什么意思?
就是一个子类能够覆盖父类的方法,只要方法名和参数名完全相同,但是父类中的方法不能是private类型的,否则即使子类的方法和父类中的方法名和参数名完全相同,也没有发生覆盖。发生覆盖的条件:1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,包括方法名称和参数类型,才能达到覆盖的效果;2、...

请从JAVA课本知识角度回答。小弟是要考试用的,老师只给了这个材料!希望...
在源程序代码中两者的主要区别是:任何一个Java Application应用程序必须有且只有一个main方法,它是整个程序的入口方法;任何一个Applet小应用程序要求程序中有且必须有一个类是系统类Applet的子类,即该类头部分以extends Applet结尾。2、抽象类是否能生成具体对象?其存在的意义?不能生成具体对象。在面向对象领域,抽象类...

抽象类中的抽象方法必需在该类的子类中具体实现是否正确
不正确,子类可以也是抽象类,子类可以实现父类全部抽象方法,也可以实现部份方法,或建立自己的方法

相似回答