자바의 Class에 대해 학습하세요.
- 클래스 정의하는 방법
- 객체 만드는 방법 (new 키워드 이해하기)
- 메소드 정의하는 방법
- 생성자 정의하는 방법
- this 키워드 이해하기
- 이진트리 구현하기
(접근제어자) (abstract, final, strictfp) class 클래스명 extends 부모클래스명 implements 인터페이스명1, 인터페이스명2 {
// 필드
// 접근제어자 없으면 default
(접근제어자) (타입) 인스턴스변수; // 인스턴스(멤버) 변수 = 상태, 기본값으로 초기화(1)
(접근제어자) (타입) 인스턴스변수 = 값; // 명시적 초기화(2)
// 클래스 변수는 heap영역인 아닌 static영역에 메모리가 할당되어 GC의 관리를 받지 않음
// public 키워드를 붙이면 전역변수
static (접근제어자) (타입) 클래스변수; // 클래스 변수, 기본값으로 초기화(1)
static (접근제어자) (타입) 클래스변수 = 값; // 명시적 초기화(2)
// 인스턴스 변수 초기화 블록(3)
{
인스턴스변수 = 초기화;
}
// 클래스 변수 초기화 블록(3)
static {
클래스변수 = 초기화;
}
// 생성자(4)
(접근제어자) 클래스명(매개변수...) { ... }
// 인스턴스 메서드 = 행동
(접근제어자) (반환타입) 메서드명(매개변수...) { ... }
// 클래스 메서드
static (접근제어자) (반환타입) 메서드명(매개변수...) { ... }
}
new
연산자를 통해 heap
영역에 데이터를 저장할 공간을 할당받고 그 메모리 공간의 참조값(주소)을 객체에게 반환함으로써 클래스 타입의 인스턴스를 생성해주는 역할(타입) 변수명;
변수명 = new (타입)(생성자 초기화);
(타입) 변수명 = new (타입 or 클래스명)(생성자 초기화);
// 인스턴스 메서드(행동)
(접근제어자) (반환타입) 메서드명(매개변수...) { ... }
(인스턴스명).메서드명(인자...)
// 클래스 메서드(행동)
static (접근제어자) (반환타입) 메서드명(매개변수...) { ... }
(클래스명).메서드명(매개변수...)
default
생성자 자동 생성public 클래스명() {} // default constructor
this.name = name
: 서로 다른 name
this(매개변수)
를 통해 클래스의 생성자에 접근 가능, 여러 생성자에 매개변수가 겹치는 게 많을 때 유용할 듯출처:
객체지향의 사실과 오해
https://jeeneee.dev/java-live-study/week5-class/
https://junhan0037.notion.site/5-9de97deed2b2465696321e5f5c6b647d
https://www.notion.so/ae6cd0eda34b439992d099bd433239a6