2013-02-20 3 views
2

아래 생성자를 조합했습니다. 내가 가진 질문은 : 인수없이 동일한 생성자를 사용하고 동시에 2 ~ 3을 사용하는 방법은 무엇입니까? 이 작업을 수행하는 방법은 여러 가지가 있습니까? 감사합니다생성자의 여러 매개 변수

public class bankaccount { 

    String firstnameString; 
    String lastnameString; 
    int accountnumber; 
    double accountbalance;; 

    public bankaccount(String firstname,String lastname){ 
    int accountnumber=999999; 
    double accountbalance=0.0; 
    } 
} 
+0

여러 생성자를 정의하면됩니다. –

+1

현재 생성자에서 지역 변수를 선언하는 반면 필드의 값을 설정하는 것이 좋습니다. 당신은 그것을 고쳐야 만합니다 ... – jlordo

+0

@jlordo 그는 또한 'firstname' 또는'lastname'을 사용하지 않습니다. –

답변

6

사용하려는 모든 변형을 구현해야합니다. 그런 다음 코드 중복을 피하기 위해, 생성자 사이에 전화 this()를 사용할 수 있습니다

public class BankAccount { 

    public BankAccount(){ 
    this("", ""); 
    // or this(null, null); 
    } 

    public BankAccount(String firstname){ 
    this(firstname, ""); 
    // or this(firstname, null); 
    } 

    public BankAccount(String firstname, String lastname){ 
     // implement the actual code here 
    } 
} 

을 그건 그렇고, 당신은 Java Coding Conventions 체크 아웃해야합니다 - 카멜 케이스에 설명되어 있습니다 class names (따라서 생성자).

+0

스타일리쉬 한 점 - 'null'이 더 적절한 기본값이 될 것이라고 제안합니다. 하지만 각 자신의 ... –

+0

@DuncanJones 동의, 내 마음이 격렬하게 입력하는 동안 이러한 대안 사이에 점프 :) 결국, 그것은 기본적으로 "최종"생성자에 따라 달라집니다 –

0

생성자를 구현하지 않으면 no 인수 생성자가 제공됩니다. 생성자가 여러 개인 경우에는 모두 직접 구현하십시오.

public class bankaccount { 

    String firstnameString; 
    String lastnameString; 
    int accountnumber; 
    double accountbalance;; 

    public bankaccount(String firstname,String lastname){ 
    int accountnumber=999999; 
    double accountbalance=0.0; 
    } 

    public bankaccount(){ 
    // put code here, or call this(null,null)/a different constructor 
    } 

} 
+0

두 생성자가 동일한 효과가 있습니다. – jlordo

0

다른 사람은 여러 생성자를 만들 것을 제안 했으므로 좋습니다. 그러나 인수가없는 생성자 만 사용하고 getters 및 setter를 사용하여 속성에 액세스하는 것이 더 나은 경우가 있습니다.

BankAccount 클래스는 이러한 상황 중 하나 일 수 있습니다. 이것은 데이터 객체처럼 보입니다. ORM (예 : Hibernate)을 사용하여 DBMS에 유지되는 객체 중 하나입니다. Hibernate는 다중 인자 생성자를 필요로하지 않고, 인자가없는 생성자를 호출하고 getters와 setter를 통해 속성에 접근 할 것이다.

이 클래스는 무엇입니까? 객체에 매핑 된 데이터베이스 엔티티입니까? 이 모든 비용 생성자가 정말로 필요합니까 (시간 낭비 일 수 있습니다)?

이론적으로 내 제안은 객체 지향 디자인의 우수 사례와의 싸움으로 간주 될 수 있지만 실천은 이론과는 다소 다릅니다. 클래스가 일부 데이터를 전달하고 생성자가 제공된 매개 변수의 유효성을 검사하지 않는 경우 속성을 나열하고 IDE의 기능을 사용하여 getter 및 setter를 만들 수 있습니다.