我是继承和抽象类的新手。
对于这个例子,我正在设计一个可以包含个人或企业的电话簿。该人具有头衔、名字、姓氏和电话号码。该企业有一个企业名称和一个电话号码。我用抽象方法 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();
}
我的两个子类是人员和业务。该人的 getName 方法将标题、f 名称、l 名称连接起来。主要是我创建了一个电话簿数组(抽象数组),它可以容纳一个人或一个企业。
我在输出时遇到困难...如何访问 getPhone (在抽象类中)以输出它?
这是主要的(我目前只处理人员部分)
import javax.swing.*;
公共类电话簿条目{
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 来将所有内容(同时姓名和电话号码)混合在一起,但主要是因为我没有实例化 Person ,所以我无法访问该 toString ?抱歉,如果这令人困惑...我只是在输入我的(可怜的)思路...