gpt4 book ai didi

Java 编码——继承问题

转载 作者:行者123 更新时间:2023-12-01 10:26:52 24 4
gpt4 key购买 nike

我是java新手,在制作多级继承程序时遇到很多问题。

我正在尝试制作一个程序,根据用户输入的内容将我的主类(AU)分解为子类。

我的问题是当我尝试从第一级子类(学生)调用第二级(Part_Time_Student)子类时。

每当我尝试调用它时,它只会调用第一级子类(我当前所在的子类)。

我注意到,如果我让我的第二级子类(Part_Time_Student)扩展主父类(super class)(AU),它会起作用,但我更愿意让它扩展学生。

我意识到这是一篇非常复杂的帖子(特别是因为我不知道术语),但我希望我的代码足够容易理解。

AU.java

public class AU {
Scanner input;
static String name;
static Long numb;

public AU() {

}

public void Name() {
input=new Scanner(System.in);
System.out.println("What is the member's name");
String nam = input.nextLine();
AU.name=nam;
System.out.println(nam +" has been added");
}

public void Phone() {
input=new Scanner(System.in);
System.out.println("What is the member's phone number");
Long number = input.nextLong();
AU.numb=number;
System.out.println(number+ " has been saved");
}
}

Main.java

public class Main {
private static Scanner input;

public static void main(String[] args) {
AU au = new AU();
au.Name();
au.Phone();
while (3==3) {
System.out.println("What is your role at the University?");
input=new Scanner(System.in);
String determ=input.nextLine();
if (determ.toUpperCase().equals("STUDENT")) {
Student student=new Student();
break;
}
else if (determ.toUpperCase().equals("STAFF")) {
break;
}
else if (determ.toUpperCase().equals("FACULTY")) {
break;
}
else if (determ.toUpperCase().equals("TESTER")) {
break;
}
else {
System.out.println("Invalid Response");

}
}
System.out.println("yay");
}}

Part_Time_Student.java

public class Part_Time_Student extends Student {

public Part_Time_Student() {
System.out.println("it switched");
System.out.println(GPA);
System.out.println(Assign);
System.out.println(name);
}
public void tester() {
System.out.println("test");
}
}

Student.java

public class Student extends AU {
static double GPA=5;
static String Assign;
public Student() {
super();
System.out.println(name);
System.out.println("Are you a full-time student or part- student(type part or full)");
input=new Scanner(System.in);
while (3==3) {
String get=input.nextLine();
switch (get.toUpperCase())
{
case "PART":{
Student.Assign="Part";
Part_Time_Student Studentp = new Part_Time_Student();
break;
}
case "FULL":{
Student.Assign="Full";
break;
}
default :{
System.out.println("Invalid ");

}}}
}
public void gpa(String grade,long credits) {

System.out.println(name+numb);

name=name;
}
public void Welcome() {
System.out.println("Welcome Student");
}
}

输出:成员(member)姓名是什么

-测试

已添加测试

成员(member)的电话号码是什么

-540

540已保存

您在大学的角色是什么?

-学生

测试

您是全日制学生还是部分学生(输入部分或全日制)

-部分

测试

您是全日制学生还是部分学生(输入部分或全日制)

如您所见,命令“Part_Time_Student Studentp = new Part_Time_Student();”刚刚结束学生类记忆。

最佳答案

If a constructor does not explicitly invoke a superclass constructor, the Java compiler automatically inserts a call to the no-argument constructor of the superclass.

https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html

关于Java 编码——继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35327921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com