关于java抽象学生类的

为什么要建立分别以Student.java和StudentTest.java为名的两个文件,而且内容相似,才能运行??
/*这是以Student.java命名的*/
import java.util.Scanner;
public class Student{
private String name;
private char sex;
private int age;
private String[] coursenames;
private double[] coursescores;
public Student(){
name="unknown name!";
sex='M';
age=0;
coursenames=new String[3];
coursescores=new double[3];
coursenames[0]=new String("语文");
coursenames[1]=new String("数学");
coursenames[2]=new String("英语");
coursescores[0]=coursescores[1]=coursescores[2]=0.0;
}
public Student(String n,char s,int a){
name=n;
sex=(s=='F')?s:'M';
if(a>=0&&a<=40)age=a;
else age=18;
coursenames=new String[3];
coursescores=new double[3];
coursenames[0]=new String("语文");
coursenames[1]=new String("数学");
coursenames[2]=new String("英语");
coursescores[0]=coursescores[1]=coursescores[2]=0.0;
}
public void introduceMe(){
System.out.println("我的名字是:"+name);
System.out.println("我的性别和名字分别是:"+sex+" 和 "+age);
System.out.println("我的成绩还没有输入!");
}
}
class StudentTest {
public static void main(String[]args){
Student stu1=new Student();
Student stu2=new Student("张三",'M',23);
stu1.introduceMe();
stu2.introduceMe();
}
}
/*这是以StudentTest.java命名的*/
import java.util.Scanner;
class Student{
private String name;
private char sex;
private int age;
private String[] coursenames;
private double[] coursescores;
public Student(){
name="unknown name!";
sex='M';
age=0;
coursenames=new String[3];
coursescores=new double[3];
coursenames[0]=new String("语文");
coursenames[1]=new String("数学");
coursenames[2]=new String("英语");
coursescores[0]=coursescores[1]=coursescores[2]=0.0;
}
public Student(String n,char s,int a){
name=n;
sex=(s=='F')?s:'M';
if(a>=0&&a<=40)age=a;
else age=18;
coursenames=new String[3];
coursescores=new double[3];
coursenames[0]=new String("语文");
coursenames[1]=new String("数学");
coursenames[2]=new String("英语");
coursescores[0]=coursescores[1]=coursescores[2]=0.0;
}
public void introduceMe(){
System.out.println("我的名字是:"+name);
System.out.println("我的性别和名字分别是:"+sex+" 和 "+age);
System.out.println("我的成绩还没有输入!");
}
}
public class StudentTest {
public static void main(String[]args){
Student stu1=new Student();
Student stu2=new Student("张三",'M',23);
stu1.introduceMe();
stu2.introduceMe();
}
}

你那两个不同命名Student.java/StudentTest.java的程序,完全是两个程序,单独一个就能运行了,就给你分析一个程序吧。
import java.util.Scanner//引入常用工具包
public class Student{ } //创建公共类,一个程序中只有一个

下面是一个构造方法,在类被创建实例时就执行
public Student(){
name="unknown name!";
sex='M';
age=0;
coursenames=new String[3];
coursescores=new double[3];
coursenames[0]=new String("语文");
coursenames[1]=new String("数学");
coursenames[2]=new String("英语");
coursescores[0]=coursescores[1]=coursescores[2]=0.0;
}
下面又是一个构造方法,它和上面一个方法构成重写,就看你创建时是否传参来进行调用
public Student(String n,char s,int a){
name=n;
sex=(s=='F')?s:'M';
if(a>=0&&a<=40)age=a;
else age=18;
coursenames=new String[3];
coursescores=new double[3];
coursenames[0]=new String("语文");
coursenames[1]=new String("数学");
coursenames[2]=new String("英语");
coursescores[0]=coursescores[1]=coursescores[2]=0.0;
}
下面是一个成员方法
public void introduceMe(){
System.out.println("我的名字是:"+name);
System.out.println("我的性别和名字分别是:"+sex+" 和 "+age);
System.out.println("我的成绩还没有输入!");
}
下面是为了对上面的类进行的测试而写的一个类
class StudentTest {
}

在这个类中有主方法 public static void main(String[]args){ }
它是一个程序执行的入口。
在主方法中创建了实例 Student stu1=new Student();因为没有给它传参数,所以它自动匹配了Student中的构造方法public Student(){ }来进行初始化
下面又创建了一个实例,是以 public Student(String n,char s,int a){ }方法来初始化的
最后调用它们的方法显示信息stu1.introduceMe();
stu2.introduceMe();
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-04
完全没必要,我们通常是把一个Java类放到一个文件里面,但是也可以都放到一个文件里,但是注意只能有一个是public class。

因此,你上面的两个文件除了public class所在位置外都是一样的,编译任何一个都会生成两个.class文件,其中StudentTest.class是带有main()方法,可以运行的。
第2个回答  2012-04-04
如果你使用的java命令行工具, 你可以切换到 StudentTest.java 文件所在的目录, 然后输入编译命令 javac StudentTest.java ,之后输入解释运行命令: java StudentTest

注:
具体的命令是,先打开"运行", 输入 "cmd"
之后用 cd 命令切换到 StudentTest.java 文件所在的目录
最后输入如上的编译和解释运行命令,就可以看到结果了
第3个回答  2012-04-04
test文件是用来测试你的Student.java是否能正常执行用的。
相似回答