Java 생성자

김정훈·2024년 4월 16일

Java

목록 보기
9/48

생성자

  • 클래스명과 동일한 명칭의 함수
  • 객체를 생성해 주는 역할

데이터 영역 메모리(코드 & 상수 영역 메모리)

클래스 로더 -> 클래스 파일 -> 데이터 영역 로드

1. 디폴트 생성자(기본 생성자)

클래스에 생성자 메서드가 정의된 것이 없으면 -> 컴파일러가 자동 추가

public 클래스명() { //기본 생성자
	//객체가 생성된 이후 실행 코드
    //실행 시점 : id, name, subject에 공간을 할당 받은 상태
    //주로 인스턴스 변수의 초기화 작업을 주로 수행한다.
}
public class Student {
    int id;
    String name;
    String subject;

    public Student(){//기본생성자(default 생성자)
        System.out.println("객체 생성 이후 실행");
        id=1000; //인스턴스 변수의 초기화
        name="이이름"; //인스턴스 변수의 초기화
        subject="자바"; //인스턴스 변수의 초기화
    }

    void study(){
    //1) 객체 생성 2) 호출 - 호출시점에는 인스턴스 변수가 이미 공간 할당
        System.out.printf("학번 %d, %s가 %s를 공부한다",id,name,subject);
    }
public class Ex03 {
    public static void main(String[] args) {
        Student s1 = new Student();
        s1.study(); 
        //>위에 디폴트생성자로 인해 초기화된 인스턴스 변수들이 출력된다.
        //함수가 실행되려면 우선객체가 먼저 생성되어야한다.
    }
}
public Student(int _id, String _name, String _subject){//기본생성자(default 생성자)
        //클래스가 이미 정의되어있으면 정의되어주지않는다. 정의가 되지않을때만 한다.
        id = _id;
        name = _name;
        subject = _subject;
        }

2. 생성자 오버로드

생성자 오버로드 : 클래스에서 생성자가 두개 이상 제공되는 경우

  • 필요에 따라 매개변수가 다른 생성자를 여러 개를 만들 수 있다
  • 클래스에 생성자를 여러 개 제공하면 이 클래스를 사용하는 코드에서는 원하는 생성자를 선택해 사용할 수 있습니다.
  • 경우에 따라서는 클래스에서 일부러 디폴트 생성자를 제공하지 않기도 합니다.
  • 객체지향 프로그램에서 메서드 이름이 같고 매개변수만 다른 경우를 오버로드라고 합니다.
public class Ex06 {
    public static void main(String[] args) {
        int result1 = add(10,20);
        System.out.println(result1);
        int result2 = add(10,20,30);
        System.out.println(result2);
    }
    static int add(int num1, int num2){
        return num1 + num2;
    }
    static int add(int num1, int num2, int num3){
        return num1 + num2 + num3;
    }
}

함수의 이름

패키지명 + 클래스명 + 반환값 + 함수명 + 매개변수 정의 + 예외 전가
함수의 시그니쳐가 동일O → 함수의 중복 정의 → 오류
함수의 시그니쳐가 동일X → 함수명이 같아도 다른 함수를 정의

profile
안녕하세요!

0개의 댓글