Major S-T-U-D-Y

[JAVA] 4. class

rlo-lo 2024. 10. 14. 22:55

 

 

 

 

 

 

 

 

1. 클래스 구성

메소드나 필드의 접근권한 생략 시  default 취급

public 접근 지정자 : 다른 모든 클래스의 접근 허용 

 

객체 생성과정

1. 레퍼런스 변수 선언

2. 객체 생성(new) 

3. 객체 멤버 접근 (. 연산자) 

 

생성자 특징 

생성자는 메소드

클래스 이름과 동일함

생성자는 리턴 타입 지정 불가 

객체가 생성될 때(new) 반드시 호출됨 

생성자가 아무것도 없을 때 기본생성자 자동 호출 (디폴트 생성자 : 매개변수 없음)

this 레퍼런스 

컴파일러에 의해 자동 관리 

this.멤버 형태로 객체 자신에 대한 레퍼런스 

 

언제 필요한가?

- 다른 메소드 호출 시 객체 자신의 레퍼런스를 전달할 때 

- 메소드가 객체 자신의 레퍼런스를 반환할 때 

this() 

다른 생성자 호출가능!! 생성자 내에서만 사용 가능 

반드시 생성자 코드의 제일 처음에 수행할 것

 

객체의 치환 

객체 복사가 아닌 레퍼런스 복사 

 

 

 

 

 

 

 

 

1) 기본 타입의 값 전달 

- 값이 복사되어 전달 

 

2) 객체 혹은 배열 전달

- 레퍼런스만 전달 

 

 

 

자바에서는 new에 의해 할당된 객체 가용 메모리로 자동 소멸

 

가비지

 

가리키는 레퍼런스가 하나도 없는 객체 

-> 가비지 컬렛견 : 자동으로 가비지 수집 반환!

- 가비지 컬렉션 스레드에 의해 수행된다

 

개발자에 의한 강제 가비지 컬렉션 

- System.gc(); 

 

but, 자바 가상기계가 가비지 컬렉션 시점을 전적으로 판단

 

접근지정자

클래스 접근지정

1) private : 동일 class 

2) default : 동일 package

3) protected : 동일 package + 상속받은 자식클래스

4) public : 모든 클래스 

 

- 클래스 접근지정자(dafualt) 생략가능

 

멤버 접근지정

1) private :  동일 클래스 

2) default : 동일 package

3) protected :  동일 package + 자식클래스

4) public : 모든 클래스

 

Static 멤버 

- 클래스 멤버 not instance member

- 객체 생성 없이 사용

-> 클래스이름.클래스멤버 로 접근 가능!!

 

 

Static 활용 

1. Math : java.lang.Math 

- 모든  필드, 메소드의 public 선언 

 

2. 공유멤버 작성 시

static 메소드는 non-static 필드/메소드 사용 불가

static 메소드는 this 사용불가 (객체 생성 않은 상황에서도 호출 가능하기에)

 

 

 

 

 

 

 

 

 

Final

1) final class name

2) protected final int finalmethod()~~

3) public static final double ~ -> 수정 불가