데이터 영역 메모리(코드 & 상수 영역 메모리)
클래스 로더 -> 클래스 파일 -> 데이터 영역 로드
클래스에 생성자 메서드가 정의된 것이 없으면 -> 컴파일러가 자동 추가
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;
}
생성자 오버로드 : 클래스에서 생성자가 두개 이상 제공되는 경우
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 → 함수명이 같아도 다른 함수를 정의