상속 클래스와 추상 클래스를 처음 사용했습니다.추상 클래스를 사용하여 출력하는 방법
이 예제에서는 개인 또는 비즈니스를 가질 수있는 전화 번호부를 디자인하고 있습니다. 그 사람은 제목, 이름, 성 및 전화 번호를 가지고 있습니다. 비즈니스 이름과 전화 번호가 있습니다. 나는 은 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에 어떻게 액세스합니까? 이것은 (I는 현재 개인 부분에서 일하고 있어요) 내가 쉽게 내가 있기 때문에 액세스 할 수 있습니다
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 주입니다
전화 번호부 []. 나는 사람을 인스턴스화하지 않았기 때문에 모든 것을 함께 정리하기 위해 (to name과 전화 번호) toString을 필요로한다고 생각했지만 그 다음에는 toString에 액세스 할 수 없다. 이 혼란 경우 죄송합니다 ... 난 그냥 생각의 내 (가난한) 기차 ... 당신은 항상 모든 객체에 toString()
를 호출 할 수 있어야한다
왜 추상 클래스에서'this.getPhone()'을 할 수 없습니까? 두 개의 구현 모두 해당 속성을 가지고 있기 때문에 메소드와 속성을 정의하십시오. – hvgotcodes
fwiw, 추상 클래스 이름을 변경하고자 할 수 있습니다. 전화 번호부는 아닙니다. 그것은 항목을 나타냅니다 .... – hvgotcodes