2011-12-31 3 views
2

나는 자바를 배우고 있으며 이해할 수 없거나 해결할 수없는 문제가 있습니다! 나는 상속과 추상적 인 방법에 대해 배웠다. 그래서 저는 Account라고 부르는 수퍼 클래스를 작성한 다음 두 개의 하위 클래스 인 savingsAccount와 creditAccount를 호출했습니다. 나는 또한 하위 클래스의 객체를 두 개의 분리 된 arraylist에 넣었다.arraylist에 수퍼 클래스의 객체?

하지만 교사가 계정 개체를 만들어 arraylist에 넣고 두 개의 별도 목록 대신에 해당 목록에서 savingsAccount 개체와 creditAccount 개체를 가져 오기 때문에 변경해야합니다.

하지만 내가 absract 클래스와 메서드에 대해 읽었을 때, 당신은 추상 수퍼 클래스의 개체를 만들 수 없다고합니다!? 그렇다면 어떻게 계정 객체를 만들고 여전히 추상적 인 방법을 사용해야합니까? 도움을 주시면 감사하겠습니다! 감사!

답변

4

만들 수 없습니다로 is-a 관계를 정의하십시오. SavingsAccount 이고 계좌는 이고 계좌는입니다. 그래서하는 List<Account> 이후 Account의를 포함하는 데 사용되며, CreditAccount 또는하여 SavingsAccount 당신은 List<Account>에 두 클래스의 인스턴스를 추가 할 수 있습니다, 계정입니다 : 당신이에서 계정을 얻을 것이다 때

Account a = new CreditAccount(); 
list.add(a); 

list (예 : Account a = list.get(0))이면이 계정은 CreditAccount 또는 SavingsAccount가되며 추상 메서드를 호출하면 하위 클래스에 정의 된 메서드의 구현이 호출됩니다.

+0

+1. 다른 두 사람은 자세하게 설명하지 않았기 때문에 나는 대답을 올리려했다. 그러나 이것은 근거를 훌륭하게 다룬다. – Perception

+0

+1 나는 경쟁 대답이 있더라도 투표했습니다. 잘 하셨어요. –

+0

니스! 하지만 어떻게 여러 고객을 처리 할 수 ​​있을까요? 고객은 여러 가지 다른 계정을 가질 수 있습니다. 그리고 하위 클래스의 메소드에 ans set values를 얻으려면 어떻게해야할까요? –

2
List<Account> accountList = new ArrayList<Account>(); 

Account이 추상적 일지라도 작동합니다.

+0

감사! 나는 이걸 실행할 때 기호를 찾을 수없는 것과 같은 오류가 발생합니다 : List accountList = new ArrayList (); –

+0

java.util.List 및 java.util.ArrayList에 대한 가져 오기가 있는지 확인하십시오. –

+0

나는 java.util.List를 놓쳤다. –

2

시도

List<Account> accounts = new ArrayList<Account>(); 
이 작동합니다

- 당신이 당신의 서브 클래스 여기을 모두 추가 할 수 있습니다 있지만, 계정 개체를 추가 할 수 없습니다 - 그들은 absract하고 상속을 사용

+0

고마워! 흠, 이것을 조금 이해하기 힘듭니다! 그래서 나는 Account 오브제를 만들지 않을거야?! 하지만 목록에있는 SavingsAccount 및 CreditAccounts 메소드를 전달하고 도달하려면 어떻게해야합니까? –

+0

귀하의 특정 계정 (서브 클래스)은 각각 '계정 클래스'입니다. 만약'Account a'가'SavingsAccount' 또는'CreditAccounts'의 유형인지 확인해야한다면, (incatanceof CreditAccounts) {} else {}' – dantuch

+0

@ 3D-kreativ는 내 의견을 읽고 더 많이 알아야하는지 물어 봅니다. – dantuch

관련 문제