Java - DAY 8

NewTypeAsuka·2023년 2월 15일
0

Java@

목록 보기
9/22

1. 필드(Field)

필드

  • 멤버 변수 + 클래스 변수
[접근제한자] [예약어] class 클래스명 {
	[접근제한자] [예약어] 자료형 변수명 [= 초기값];
}
public class Academy {
	public int temp1;
	protected int temp2;
	int temp3; //접근제한자 생략 시 (default)
	private int temp4; //캡슐화 원칙으로 private 사용
}

필드 접근제한자

  • 1) public: 전체 접근 가능
    2) protected: 해당 클래스 내부, 같은 패키지, 후손 클래스 내부에서만 접근 가능
    3) (default): 해당 클래스 내부, 같은 패키지에서만 접근 가능
    4) private: 해당 클래스 내부에서만 접근 가능

필드 예약어

  • static:
    같은 타입의 여러 객체가 공유할 목적의 필드에 사용하며,
    프로그램 시작 시에 정적 메모리 영역(static)에 자동 할당되는 멤버에 적용
  • final:
    하나의 값만 계속 저장해야 하는 변수에 사용하는 예약어
public class Academy {
	private final int TEMP1 = 100; // final 키워드가 붙은 필드명은 모두 대문자로 표기
	private int temp4;
}

클래스 초기화 블럭

  • 인스턴스 블럭:
    인스턴스 변수를 초기화시키는 블럭으로 객체 생성 시마다 초기화
  • 클래스 블럭(static 블럭):
    static 필드를 초기화시키는 블럭으로 프로그램 시작 시에 한번만 초기화

2. 생성자(Constructor)

생성자

  • 객체가 new 연산자를 통해 Heap 메모리 영역에 할당될 때
    객체 안에서 만들어지는 필드 초기화 + 생성 시 필요한 기능 수행
  • 생성자는 일종의 메서드로 전달된 초기 값을 받아서 객체의 필드에 기록
  • 생성자 규칙:
    생성자의 선언은 메서드 선언과 유사하나 반환 값이 없으며
    생성자명을 클래스명과 똑같이 지정해주어야 함
[접근제한자] [예약어] class 클래스명 {
	[접근제한자] 클래스명() { }
	[접근제한자] 클래스명(매개변수) { (this.)필드명 = 매개변수; }
}

생성자 종류

  • 1) 기본 생성자:
    작성하지 않은 경우, 클래스 사용 시 컴파일러가 자동으로 기본 생성자 생성
    2) 매개변수 생성자:
    객체 생성 시 전달받은 값으로 객체를 초기화하기 위해 사용
    매개변수 생성자 작성 시 컴파일러가 기본 생성자를 자동으로 생성해주지 않음
    상속에서 사용 시 반드시 기본 생성자를 작성
    오버로딩을 이용하여 작성
public class Academy {
	private int studentNo;
	private String name;
	public Academy() {} // 기본 생성자
	public Academy(int studentNo, String name) { //매개변수 있는 생성자
		this.studentNo = studentNo;
		this.name = name;
	}
}

오버로딩(Overloading)

  • 한 클래스 내에 동일한 이름의 메서드를 여러 개 작성하는 기법
  • 오버로딩 조건
    1) 같은 메서드 이름
    2) 다른 매개변수의 개수, 타입, 순서를 갖춰야 함

3. this 생성자

this()

  • this 생성자
  • 같은 클래스의 다른 생성자를 호출할 때 사용
  • 반드시 첫번째 줄에 선언해야 함
public class Academy{
	private int age;
	private String name;
	public Academy() {
    	this(20, “김철수”);
    }
	public Academy(int age, String name) {
	this.age = age; this.name = name;
	}
}

0개의 댓글