gpt4 book ai didi

java - 如何用抽象类输出

转载 作者:行者123 更新时间:2023-12-02 07:50:16 25 4
gpt4 key购买 nike

我对继承和抽象类不熟悉。

在此示例中,我正在设计一本可以包含个人或企业的电话簿。该人有头衔、名字、姓氏和电话号码。该企业有企业名称和电话号码。我用抽象方法 getName 创建了一个抽象类(这对你们来说可能听起来很简单,但请耐心听我说!)

public  abstract class PhoneBook {

private String phone;


public boolean setPhone(String p) //final
{
boolean flag = false;
if(p.length()!= 10)
{
flag = false;
}

for (int i = 0; i < p.length(); i++)
{
if(Character.isDigit(p.charAt(i)))
{
phone = p;
flag = true;
}
}
return flag;
}

public abstract String getName();

}

我的两个子类是“Person”和“Business”。该人的 getName 方法连接标题、f 名称、l 名称。主要是我创建了一个电话簿数组(抽象数组),它可以容纳一个人或一个企业。

我在输出方面遇到困难...如何访问 getPhone(在抽象类中)来输出它?

这是主要部分(我目前只处理人物部分)

import javax.swing.*;

公共(public)类 PhoneBookEntries {

public static final int MAX = 100;

public static void main(String[] args) {

PhoneBook[] phone = new PhoneBook[100];
int selection;
int i = 0;

do{
selection = Integer.parseInt(JOptionPane.showInputDialog("Would you like to add a\n1.person\n2.business\nto the phone book?"));

switch(selection)
{
case 1: phone[i]= fillPerson();
break;
case 2: fillBusiness();
break;
}

}while(i < MAX && JOptionPane.showConfirmDialog(null, "Add another entry to phone book?")==JOptionPane.YES_OPTION);

//output
String output;
output = phone[i].getName();
JOptionPane.showMessageDialog(null, output);

}

private static PhoneBook fillPerson()
{
Person someone = new Person();
someone.setTitle(JOptionPane.showInputDialog("Enter your title\n(Mr., Mrs., Ms., or Dr.)"));
someone.setFName(JOptionPane.showInputDialog("Enter the first name of the person: "));
someone.setLName(JOptionPane.showInputDialog("Enter the last name of the person: "));
while(!someone.setPhone(JOptionPane.showInputDialog("Enter your 10 digit phone number: ")))
JOptionPane.showMessageDialog(null, "Error. Please enter only 10 numerical values\n(examle: 7034567890");
return someone;
}

private static void fillBusiness()
{

}

}

getName 我可以轻松访问,因为我有 PhoneBook[]。我想我需要一个 toString in Person 将所有内容混合在一起(同时名称和电话号码),但在主要部分我无法访问该 toString 因为我没有实例化 Person ?抱歉,如果这令人困惑......我只是打出我的(可怜的)思路......

最佳答案

您应该始终能够在任何对象上调用 toString(),因为这是在 java.lang.Object 上定义的方法,它是所有其他类的父类(super class)。

因此,如果您在 Person 类上重写 toString(),那么从抽象类调用它就不会有任何问题。

根据您的问题,我不太确定您想要做什么,但这里是 Person 的 toString 实现的示例:

@Override
public String toString(){

StringBuilder result = new StringBuilder();
String NEW_LINE = System.getProperty("line.separator");

result.append(this.getClass().getName() + " Object {" + NEW_LINE);
result.append(" Title: " + getTitle() + NEW_LINE);
result.append(" FName: " + getFName() + NEW_LINE);
result.append(" LName" + getLName + NEW_LINE );
result.append("}");

return result.toString();
}

关于java - 如何用抽象类输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10305565/

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