내장형 하드웨어/JAVA

JAVA - 생성자

동화다아아 2011. 7. 25. 17:50

- 생성자(Constrouctor)

⇒ 객체가 생성될 때 (instance영역에 올라갈 때) 그 객체가 기본적으로 가지고 있어야 할 값이나 처리한 코드를 넣어주는 method의 일종

⇒ 반환형이 없고, 클래스의 이름과 동일하게 작성

        

class Test{

        public Test(){

 

        }

}

⇒ 객체화 할 때, 자동으로 호출됨

method를 호출하듯이 호출 가능함

⇒ 개발자가 생성자를 하나도 정의하지 않으면, compiler가 컴파일시 자동으로 parameter 없는 기본생성자 생성

⇒ 생성자는 상속되지 않음

this super로 내 class의 생성자나 부모클래스의 생성자 호출

overloading 지원됨

 

⇒ 접근지정자 클래스명();

1. public : 외부 class에서 객체화 가능

2. protected : 동일 package에서는 객체화 가능, 외부 package에서는 상속받은자식 클래스만 객체화 가능

3. private : class안에서만 객체화 가능 (single ton pattern 적용시)

4. default : 동일 package에서만 객체화 가능

 

<조건>

1. 생성자의 이름은 클래스의 이름과 같아야 한다.

2. 생성자는 리턴값이 없다 (But, void를 사용X)

<기본생성자 default constructor>

⇒ 매개변수가 없는 생성자

⇒ 클래스에 생성자가 없으면 컴파일러가 기본생성자 추가

 

<생성자에서 다른 생성자 호출 this()>

⇒ 생성자의 이름으로 클래스 이름 대신 this를 사용

⇒ 한 생성자에서 다른 생성자를 호출할 때는 반드시 첫 줄ㅇ서만 호출 가능

 

<참조변수 this>

⇒ 인스턴스 자신을 가리키는 참조변수.

⇒ 인스턴스의 주소가 저장되어 있음

⇒ 모든 인스턴스 method에 지역변수로 숨겨진 채로 존재

 

 

- 은행 입출금 예제

package kr.ac.busanit;

 

//Account.java

public class Account {

 

       String accountNo;

       String ownerName;

       int balance =1000000;

       void deposit(int amount)

       {

             balance = balance + amount;

       }

       int withdraw(int amount)

       {

             if(balance < amount)

             {

                    return 0;

             }

             balance = balance - amount;

             return amount;

       }

       public void setAccountNo(String accountNo)

       {

             this.accountNo = accountNo;

       }

       public String getAccountNo()

       {

             return accountNo;

       }

       public void setOwnerName(String ownerName)

       {

             this.ownerName = ownerName;

       }

       public String getOwnerName()

       {

             return ownerName;

       }

       public void setBalance(int balance)

       {

             this.balance = balance;

       }

       public int getBalance()

       {

             return balance;

       }

      

       public static void main(String[] args) {

             // TODO Auto-generated method stub

 

       }

 

}

 

 

 

package kr.ac.busanit;

 

//AccountTest.java

public class AccountTest {

 

       public static void main(String[] args) {

             // TODO Auto-generated method stub

             Account myAccount = new Account();

            

             myAccount.withdraw(100000);

             System.out.println("통장의 잔액은 : " + myAccount.getBalance());

             myAccount.deposit(500000);

             System.out.println("통장의 잔액은 : " + myAccount.getBalance());

 

       }

 

}

⇒ 출력 결과

        통장의 잔액은 : 900000

        통장의 잔액은 : 1400000