问题描述
我有三个类Person类,Main类和Donar类,
个人类
public class Person{
private String name;
private String dateOfBirth;
private String gender;
private String mobileNumber;
private String bloodGroup;
Person(){
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDateOfBirth() {
return dateOfBirth;
}
public void setDateOfBirth(String dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getMobileNumber() {
return mobileNumber;
}
public void setMobileNumber(String mobileNumber) {
this.mobileNumber = mobileNumber;
}
public String getBloodGroup() {
return bloodGroup;
}
public void setBloodGroup(String bloodGroup) {
this.bloodGroup = bloodGroup;
}
public void displayPersonDetails( )
{
System.out.println("Name : " + name);
System.out.println("Date of Birth : " +dateOfBirth);
System.out.println("Gender : " +gender);
System.out.println("Mobile Niumber : " +mobileNumber);
System.out.println("Blood Group : "+bloodGroup);
}
}
捐助者班
class Donor extends Person
{
private String bloodBankName;
private String donorType;
private String donationDate;
public Donor() {
}
public String getBloodBankName() {
return bloodBankName;
}
public void setBloodBankName(String bloodBankName)
{
this.bloodBankName = bloodBankName;
}
public String getDonorType() {
return donorType;
}
public void setDonorType(String donorType) {
this.donorType = donorType;
}
public String getDonationDate() {
return donationDate;
}
public void setDonationDate(String donationDate) {
this.donationDate = donationDate;
}
public void displayDonationDetails( ) {
System.out.println("Donation Details :");
super.displayPersonDetails();
System.out.println("Blood Bank Name : "+bloodBankName);
System.out.println("Donor Type : "+donorType);
System.out.println("Donation Date : "+donationDate);
}
}
主类
package EBoxex1;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Donor d=new Donor();
Person p=new Person();
Scanner sc=new Scanner(system.in);
System.out.println("Enter the name :");
p.setName(sc.nextLine());
System.out.println("Enter Date of Birth :");
p.setDateOfBirth(sc.nextLine());
System.out.println("Enter Gender :");
p.setGender(sc.nextLine());
System.out.println("Enter Mobile Number :");
p.setMobileNumber(sc.nextLine());
System.out.println("Enter Blood Group :");
p.setBloodGroup(sc.nextLine());
System.out.println("Enter Blood Bank Name :");
d.setBloodBankName(sc.nextLine());
System.out.println("Enter Donor Type :");
d.setDonorType(sc.nextLine());
System.out.println("Enter Donation Date :");
d.setDonationDate(sc.nextLine());
d.displayDonationDetails();
sc.close();
}
}
我不知道错误是什么。
当我们运行 main 方法时,意味着它会询问用户的详细信息,然后像 Name,Date of Birth,Gender,Mobile Number,Blood Group
这样的详细信息被转到 Person
类(getter 和 setter 方法)然后像 {{1} 这样的详细信息} 都转到 Blood Bank Name,Donor Type,Donation Date
类(getter 和 setter 方法)然后在主类中调用方法 Donor
。在这个方法中,我们必须调用Person 类中的详细信息。但该方法无法将 displayDonationDetails
类的详细信息获取到 Person
类方法
解决方法
您正在创建两个单独的对象:Person "p" 和 Donor "d"(由于继承是一个 Person 本身)。
然后在“p”对象上设置所有人员数据(姓名、出生日期、性别等),在“d”对象上设置所有捐赠者数据(捐赠者类型、捐赠日期等)。>
所以在 main-method 的末尾,你的对象看起来像这样:
人“p”:
|---------------|---------------|
| Attribute | Value |
|---------------|---------------|
| name | jano |
| dateOfBirth | 5/11/1998 |
| gender | Female |
| mobileNumber | 456437538 |
| bloodGroup | A+ve |
|---------------|---------------|
Donor "d"(Donor 继承自 Person 类):
|---------------|---------------|
| Attribute | Value |
|---------------|---------------|
| name | null |
| dateOfBirth | null |
| gender | null |
| mobileNumber | null |
| bloodGroup | null |
| bloodBankName | Bload assur e |
| donorType | ssssssssssag |
| donationDate | 5/787/989 |
|---------------|---------------|
然后通过调用方法“displayDonationDetails”,您只显示捐赠者“d”的数据。所以一切都按预期进行。
只需创建 Donor 对象“d”并为其设置所有值,然后一切都会如您所愿。
,您的整个程序只需要 Donor 对象。您似乎正在创建 2 个对象,一个人对象 p 和一个施主对象 d,并在这两个对象上调用 set 方法。仅对整个程序使用捐赠者对象 d 并在捐赠者类中显示人员详细信息,在显示捐赠详细信息()中调用 super.displayPersonDetails() 作为第一行,或者更好,您可以在人员类中创建一个名为 displayDetails() 的方法并让您的捐助者班级覆盖
,使用继承时,会自动获取父类的属性。 所以你只需要创建子类对象。
你的主类应该是这样的:-
public class Main {
public static void main(String[] args){
Donor d=new Donor();
Scanner sc=new Scanner(System.in);
System.out.println("Enter the name :");
d.setName(sc.nextLine());
System.out.println("Enter Date of Birth :");
d.setDateOfBirth(sc.nextLine());
System.out.println("Enter Gender :");
d.setGender(sc.nextLine());
System.out.println("Enter Mobile Number :");
d.setMobileNumber(sc.nextLine());
System.out.println("Enter Blood Group :");
d.setBloodGroup(sc.nextLine());
System.out.println("Enter Blood Bank Name :");
d.setBloodBankName(sc.nextLine());
System.out.println("Enter Donor Type :");
d.setDonorType(sc.nextLine());
System.out.println("Enter Donation Date :");
d.setDonationDate(sc.nextLine());
d.displayDonationDetails();
sc.close();
}
}