본문 바로가기

프로젝트 & TIL/일별 공부 기록 (백엔드 스쿨)

5일차 - 자바 생성자

코드 한 줄씩 실행시켜보기(Debug 이용)

- 브레이크포인트 걸어놓고 Debug 실행

- F6로 한 줄씩 실행

- F5로 자세한 내용 확인


생성자

class 전사{
    String 이름;
    int 나이;
    
    전사(){
        이름 = "카니";
        나이 = 20;
    }
}

new 전사(); 가 실행되자마자 생성자를 통해 초기값이 세팅된다.

생성자를 만들지 않아도 자동으로 기본 생성자가 생성 된다.

생성자 연쇄 호출

public class Main {
    public static void main(String[] args) {
        new 청둥오리();
    }
}

class 동물 {
    동물(){
        System.out.println("동물이 생성되었습니다.");
    }
}
class 오리 extends 동물 {
    오리(){
        System.out.println("오리가 생성되었습니다.");
    }
}
class 청둥오리 extends 오리 {
    청둥오리(){
        System.out.println("청둥오리가 생성되었습니다.");
    }
}

// (Object 클래스의 생성자)
// 동물이 생성되었습니다.
// 오리가 생성되었습니다.
// 청둥오리가 생성되었습니다.

 

오버로딩

class 전사{
    String 이름;

    전사(){
        이름 = "카니";
    }
    
    전사(String 이름){
        this.이름 = 이름;
    }
}

한 클래스 안에서 매개변수를 다르게 하여 같은 이름의 메서드를 생성하는 것이 오버로딩


구성

public class Main {
    public static void main(String[] args) {
        오리 a오리 = new 오리();
        a오리.날다();
    }
}

class 오리{
    날개 a날개;
    오리(){
        a날개 = new 날개();
    }
    void 날다(){
        a날개.작동();
    }
}

class 날개{
    void 작동(){
        System.out.println("날개로 날아갑니다.");
    }
}

 a오리가 a날개를 이용하는 식으로 코드를 구성한다.

구성을 활용하여 복잡하게 상속을 하는 것은 지양하도록 한다.


인터페이스

public class Main {
    public static void main(String[] args) {
        사람 a사람 = new 의사();
        변호사 a변호사 = (변호사)a사람;
    }
}

class 사람 {}
class 의사 extends 사람 implements 변호사 {}
interface 변호사 {}

접근제한자

  • private
  • protected
  • (default)
  • public

Getter & Setter

class 사람 {
    String name;
    
    public void setName(String name){
        this.name = name;
    }
    
    public String getName(){
        return name;
    }
}

예외처리

  • throws
  • try / catch

Exception 을 상속 받아서 직접 예외 클래스를 만들 수 있다.