Java:如何创建和运行类结构?
我必须创建以下类层次结构 我是这样开始的:Java:如何创建和运行类结构?,java,oop,extend,Java,Oop,Extend,我必须创建以下类层次结构 我是这样开始的: public class Student { private String name; private int credits; public Student(String name, int credits) { this.name = name; this.credits = credits; } public String getName(){ return name; } public
public class Student {
private String name;
private int credits;
public Student(String name, int credits) {
this.name = name;
this.credits = credits;
}
public String getName(){
return name;
}
public void setName(String name) {
this.name = name;
}
// ...the same for "credits"...
public String toString(){
return "name: "+this.name+", credits: "+this.credits;
}
public void print(){
System.out.print(this.toString);
}
}
public class DailyStudent extends Student {
private int scholarship;
public DenniStudent(int scholarship) {
this.scholarship = scholarship;
}
public int getScholarship(){
return scholarship;
}
public void setScholarship(int scholarship) {
this.scholarship = scholarship;
}
public String toString(){
return "Scholarship: "+scholarship;
}
}
名为RemoteStudent的类看起来与DailyStudent的类几乎相同
现在我必须创建类StudentTest,在这里我将测试我刚刚创建的内容。在这个类中,我应该使用声明的构造函数(带有所有参数)从上面的每个类创建实例(对象)。在所有创建的对象上,我应该应用方法toString()和print()
但我现在面临的问题是——我不知道如何设置类学生测试以及如何创建所有需要的实例。。。如果这个方法只在学生类中使用,那么如何使用方法print()
我完全是Java新手,但是,前两种方法正确吗
谢谢你们的帮助和耐心
编辑:学生测试方法的实施:
public class StudentTest {
public static void main(String[] args) {
DailyStudent daily = new DailyStudent(1000);
daily.print(); // this is what I mean
}
}
是的,看起来不错。这就是您希望
toString
返回的内容吗?另外,看一下抽象概念,除非你的教授还没有讨论过。也许他们会介绍这个话题。如您所见,所有3个类中都使用了toString()
方法。您有一个类层次结构。让我们逐一解决问题
StudentFactory
,该类将具有方法createStudent()
,包含所有必需的参数,并根据这些参数创建远程或每日学生。请按以下方式使用它:
学生=学生工厂。创建(……)print
方法:student.print()
。它将适用于远程和日常学生@RunWith(Parametrized.class)
并只编写一个测试用例,该测试用例将为日常和远程学生运行
@RunWith(参数化的.class)
公开课学生测验{
私立学生
public StudentTest(Student student) {
this.student = student;
}
@Parameter
public static Collection<Student> createStudent() {
return Arrays.asList(
StudentFactory.create(....), // create remote student
StudentFactory.create(....)); // create daily student
}
// write your tests here
公共学生考试(学生){
这个。学生=学生;
}
@参数
公共静态集合createStudent(){
返回数组.asList(
StudentFactory.create(..)//create remote student
StudentFactory.create(..);//创建每日学生
}
//在这里写下你的测试
}这个测试用例将为在
createStudent()
方法中创建的两个学生运行。我建议你买一本关于Java编程基本概念的书。谢谢你的回复,简,我会的。但是我现在要解决的问题是,如果print方法只在学生类中,如何将print()和toString()方法应用于所有实例?请查看上面的编辑。这就是你要找的。根据您使用的IDE。。。它将为您提供一个选项,只需单击一下即可自动引入这些方法。然后您可以在RemoteStudent类中更改这些方法,它将“重写”Student中的方法。请看一下youtube上的抽象示例或谷歌内部的搜索。简,请看一下更新的OP。我不确定,我们是否在谈论同样的内容。我创建了一个StudentTest类,我试图打印DailyStudent类中的数据。我不知道,我是否可以这样做,或者我是否需要在那里使用identificatorsuper
。这让我很困惑。是的,事实上这应该有效。你用过那个主要方法吗?它应该抓取“this”实例,该实例将是每日的,并使用它的toString方法。这就是“覆盖”。我会查看“头优先java”,并浏览您认为重要的部分。你也可以很容易地免费获得.pdf版本。