超类方法的java继承方法不能得到子类中的细节?

vvppvyoh  于 2021-06-26  发布在  Java
关注(0)|答案(3)|浏览(371)

我有三个班,一人班,主班和多纳班,
人员等级

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方法),然后 Blood Bank Name, Donor Type, Donation Date 你要去医院吗 Donor 类(getter和setter方法),然后 displayDonationDetails 在主类中调用。在这个方法中,我们必须调用person类中的细节。但该方法无法获取 Person 类到 Donor 类方法

c7rzv4ha

c7rzv4ha1#

您正在创建两个独立的对象:person“p”和donor“d”(由于继承,这是person本身)。
然后在“p”对象上设置所有个人数据(姓名、出生日期、性别等),在“d”对象上设置所有捐赠者数据(捐赠者类型、捐赠日期等)。
因此在main方法的末尾,您的对象如下所示:
人员“p”:

|---------------|---------------|
| Attribute     | Value         |
|---------------|---------------|
| name          | jano          |
| dateOfBirth   | 5/11/1998     |
| gender        | Female        |
| mobileNumber  | 456437538     |
| bloodGroup    | A+ve          |
|---------------|---------------|

捐赠者“d”(捐赠者从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”的数据。所以一切正常。
只需创建施主对象“d”并为其设置所有值,然后一切都按预期进行。

vtwuwzda

vtwuwzda2#

你整个计划只需要捐赠对象。您似乎正在创建两个对象:person对象p和donor对象d,并在这两个对象上调用set方法。在整个程序中只使用捐赠者对象d,并在捐赠者类中显示个人详细信息。在display donationdetails()中调用super.displaypersondetails()作为第一行或者更好您可以在person类中创建一个方法caled displaydetails(),并使捐赠者类覆盖该方法

idv4meu8

idv4meu83#

使用继承时,会自动获取父类的属性。所以你只需要创建子类对象。
你的主要课程应该是这样的:-

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();
    } 
}

相关问题