인스턴스를 초기화 해주는 특수한 메서드
// 생성자 생성 : Alt+Insert -> Constructor -> Ctrl+A 후 Enter
// 1. 클래스 이름과 동일해야함 2. 반환 타입을 입력하면 안됨
Public Person(String name, String mbti, String job, String age) {
this.name = name;
this.mbti = mbti;
this.job = job;
this.age = age;
}
위의 this
는 언젠가 만들어질 인스턴스를 가리킴
그리고 인스턴스 생성시 아래의 형식으로 생성자 호출 사용가능
Person duekryeol = new Person(김득렬, INTP, 교육훈련생, 30);
필드 기본값 지정, 인스턴스화 공통된 동작 부여시, 깊은 복사의 경우 사용
생성자가 하나라도 있으면 기본 생성자가 추가되지 않음
// 기본 생성자
Public Person() {}
// 생성자 오버로딩
Public Person(String name, String mbti, String job, String age) {
this.name = name;
this.mbti = mbti;
this.job = job;
this.age = age;
}
Public Person() {
this("김언민", "ESTJ", "공무원","30")
}
this
는 나중에 생기게 될 인스턴스를 가리킴this
뒤에 ()
를 붙이면 별개의 메서드가 되어 다른 생성자를 호출// 아래코드는 바로 해당하는 생성자를 호출함
Person duekryeol = new Person(김득렬, INTP, 교육훈련생, 30);
// 변수를 아무것도 적지 않은 경우 생성자 오버로딩으로
// 기본 생성자에 추가된 this()가 작동하게된다
Person duekryeol = new Person();
class OuterClass {
class InstanceInnerClass // 인스턴스내부클래스
class StaticInnerClass // 스태틱내부클래스
// 2. Static 멤버는 Static 내부 클래스만 가질 수 있다.
// 1. Static 멤버는 인스턴스 멤버를 참조할 수 없다.
Public void main () {
class LocalInnerClass // 로컬내부클래스
}
}
스태틱 멤버
는 인스턴스 멤버
를 참조할 수 없다."스태틱 내부 클래스
에서는 인스턴스 내부 클래스
를 인스턴스화할 수 없다.스태틱 내부 클래스
에서는 인스턴스 메서드
를 호출할 수 없다.스태틱 내부 클래스
에서는 인스턴스 변수
를 참조할 수 없다.스태틱 멤버
는 스태틱 내부 클래스
에서만 선언할 수 있다."this()
로 4개짜리 생성자 호출매개변수 4개인 인스턴스의 흐름
-> 4개짜리 생성자의 "세 번째 생성자" 출력
김코딩은 싱글이다?
-> 김코딩은 isSingle의 값이 지정된게 없음
-> isSingle
의 기본값이 false
-> 싱글이 아니다
public class CozStudentsTest {
public static void main(String[] args) {
// 변수 29
// 스태틱지역변수 30
// 변수 29
}
static void nextGeneration () {}
// 지역변수 30
}
class CozStudents {}
averageAge
매개변수는 메소드 내에서만 사용되는 지역 변수cozStudents
의 필드 값 averageAge
은 변경되지 않음.main
메소드에서 출력하는 최종적인 averageAge
값과 다르게 나옴