DINGA DINGA
article thumbnail
728x90

객체 (2)

생성자와 소멸자 그리고 this 키워드

- 디폴트 생성자

객체가 생성될 때 가장 먼저 호출되는 생성자

개발자가 명시하지 않아도 컴파일 시점에 자동 생성됨.

 

- 사용자 정의 생성자

디폴트 생성자 외에 특정 목적에 의해 개발자가 만든 생성자

매개변수에 차이가 있음.

 

- 소멸자

객체가 GC에 의해 메모리에서 제거될 때 finalize() 메서드가 호출됨. (명시x)

System.gc();를 사용한다고 해서 GC가 바로 작동하는 것이 아니라, 가급적 빨리 작동하도록 요청.

java는 기본적으로 메모리를 개발자가 직접 관리하지 않으므로 일반적으로 System.gc();를 사용하는 경우는 드묾.

 

- this 키워드

현재 객체를 가리키는 객체가 어떤 객체인지 명시하고 싶을 때 사용함.

 

패키지와 static

- 패키지

클래스를 폴더 형식으로 관리하는 것

 

 기존에 있던 프로젝트를 import 할 수 있음.

 

 패키지 이름은 패키지에 속해 있는 클래스가 최대한 다른 클래스와 중복되지 않도록 결정.

 일반적으로 도메인을 거꾸로 이용함.

 패키지의 이름과 구조 변경 가능.

 패키지 이름만 보고도 해당 패키지 안에 있는 클래스가 어떤 속성과 기능을 가지고 있는지 예상 가능하게 결정.

 

 

 

 

 

 

- import

// 특정 클래스 import
import com.java.dailyJournal.DailyJournal;

// 해당 경로 아래에 있는 모든 클래스 import
import com.java.dailyJournal.*;

// 직접 클래스의 풀네임을 작성하여 이용 (비효율적)
com.java.dailyJournal journal = new com.java.dailyJournal.DailyJournal();
com.java.dailyJournalObjectClass objectClass = new com.java.dailyJournal.ObjectClass();

 

- static

클래스의 속성과 메서드에 static 키워드를 사용하면 어디서나 속성과 메서드 공유 가능

(모든 객체가 공유하는 변수)

 

데이터 은닉

- 멤버 변수의 private 설정

멤버 변수(속성)는 주로 private으로 설정해서 외부로부터 데이터가 변질되는 것을 방지함.

데이터(속성) 변질이 우려되는 시나리오: 직원 급여 프로그램에서 급여액을 잘못 입력하는 경우, 변경 불가능한 사번이 변경 되는 경우 등

 

- setter, getter

멤버 변수를 외부에서 변경할 수 있도록 하는 메서드

이클립스에는 자동완성 기능이 있음. (마우스 우클릭->source)

 

상속 및 클래스

상속

- 상속이란

자식 클래스는 부모 클래스의 속성과 기능 이용 가능

 

- 상속의 필요성

기존에 검증된 클래스를 이용해 빠르고 쉽게 새로운 클래스를 만들 수 있음.

 

- 상속 구현

extend 키워드 이용

 

- 부모 클래스의 private 접근자

자식 클래스는 부모 클래스의 모든 자원을 사용할 수 있지만, private 접근자의 속성과 메서드는 사용 불가

 

상속 특징

- 메서드 오버라이드(override)

부모 클래스의 기능을 자식 클래스에서 재정의하여 사용

 

- 자료형(타입)

클래스도 자료형

 

- Object 클래스

모든 클래스의 최상위 클래스는 Object 클래스

 

- super 키워드

상위 클래스 호출 시 super 키워드 이용

 

내부 클래스와 익명 클래스

- 내부 클래스

클래스 안에 선언된 또 다른 클래스

두 클래스의 멤버에 쉽게 접근할 수 있음.

 

- 익명 클래스

이름이 없는 클래스

주로 메서드를 재정의하는 목적으로 사용

인터페이스나 추상클래스에서 주로 이용됨.

 

인터페이스

- 인터페이스란

클래스와 달리 객체 생성 불가

클래스에서 구현해야 하는 작업 명세서

 

- 인터페이스를 사용하는 이유

가장 큰 이유는 객체가 다양한 자료형(타입)을 가질 수 있기 때문.

 

- 인터페이스 구현

class 대신 interface 키워드 사용

extend 대신 implements 키워드 사용

728x90

'JAVA > Study' 카테고리의 다른 글

상속 및 클래스 (2) & 마무리  (1) 2021.07.26
기초 문법 (2) & 객체 (1)  (0) 2021.07.11
Java 개발 환경 구축 & 기초 문법 (1)  (1) 2021.07.01