Я новичок в наследовании и абстрактных классах.Как выводить с абстрактным классом
Для этого примера я составляю телефонную книгу, в которой может быть человек или бизнес. У человека есть название, имя, фамилия и номер телефона. У бизнеса есть название компании и номер телефона. я создал абстрактный класс с абстрактным методом 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. В основном я создал массив PhoneBook (абстрактный массив), который может содержать как человека, так и бизнес.
У меня возникли трудности с выходом ... как мне получить доступ к getPhone (в абстрактном классе) для вывода его?
Это главное (я в настоящее время работает только на лицо часть)
import javax.swing.*;
общественного класса 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 в Person, чтобы собрать все вместе (имя и номер телефона), но затем в основном я не могу получить доступ к этому toString, потому что у меня нет экземпляра Person? Извините, если это сбивает с толку ... Я просто набрав мой (плохой) ход мыслей ...
Почему вы не можете сделать 'this.getPhone()' в абстрактном классе? Просто определите метод и свойство там, так как обе реализации имеют это свойство ... – hvgotcodes
fwiw, вы можете захотеть изменить свое абстрактное имя класса. Он не представляет собой телефонную книгу; он представляет собой запись .... – hvgotcodes