2022 / 9 / 13 화
- 인스턴스 멤버 , 정적멤버
- 싱글톤
- final 필드 , 상수
- 패키지
- 상속
✔️ 인스턴스 멤버 , 정적 멤버
인스턴스 멤버
- 객체를 생성한 후 사용할 수 있는 필드와 메소드
- 객체없이는 사용이 불가하다.
this
- 객체(인스턴스) 자신의 참조를 갖고 이는 키워드
- 객체 내부에서 인스턴스 멤버임을 명확히 하기위해 this. 을 사용한다.
정적 멤버
- 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용 할 수있는 필드와 메소드
- 객체 내부에 존재하지 않고, 메소드 영역에 존재한다.
- static 키워드를 사용하여 정적 멤버를 선언한다.
인스턴스 멤버 선언 vs 정적 멤버 선언 기준
필드 | 객체마다 갖고 있어야 하는 데이터 | 인스턴스 필드 |
공용 데이터 | 정적 필드 | |
메소드 | 인스턴스 필드로 작업해야 하는 메소드 | 인스턴스 메소드 |
인스턴스 필드로 작업하지 않는 메소드 | 정적 메소드 |
✔️ 싱글톤
싱글톤?
- 하나의 클래스로 객체를 단 한번만 생성하도록 클래스를 설계하는 것으로 소프트웨어 디자인 패턴중 하나이다.
public class Singleton {
private : 외부에서 접근을 막는 기능.
1)자신의 객체를 내부의 필드(private)로 생성
private static Singleton singleton = new Singleton();
2)생성자(private)
private Singleton() {}
3)생성된 자신의 객체를 참조하는 메서드정의 접근자 생략시 default
static Singleton getInstance() {
return singleton;
}
}
✔️ final 필드와 상수 ( static final )
final 필드?
최종적인 값을 갖고있는 필드로 값을 변경할 수 없는 필드이다.
즉 초기값이 저장되면 이가 최종값이 되어서 프로그램 실행 도중에 수정이 불가하다는 것이다.
상수?
- 불변의 값을 상수라 한다.
- 상수 이름은 전부 대문자로 작성
- 다른 단어가 혼합된이름이라면 _ 로 연결
public class Earth {
//필드에 final키워드를 사용하면, 초기값 이외에는 다른값으로 변경할수가 없다.
static final double EARTH_RADIUS = 6400;
static final double EARTH_SURFACE_AREA;
static {
EARTH_SURFACE_AREA = 4 * Math.PI * EARTH_RADIUS * EARTH_RADIUS;
}
}
✔️ 패키지
패키지란?
- 클래스를 기능별로 묶어서 그룹 이름을 붙여 놓은 것이다.
- 클래스를 체계적으로 관리하지 않으면 복잡하고 난해한 프로그램이 되어 결국 유지보수하기가 어려워진다.
- 클래스 이름이 동일하더라도 패키지가 다르면 다른 클래스로 인식한다 !
import문
- 다른 패키지에 속하는 클래스를 사용하기 위해서는 두 가지 방법 중 하나를 선택해야 한다.
- 패키지와 클래스를 모두 기술 ( 코드가 복잡해짐 )
- import문 사용
사용하지 않은 패키지 정리. CTRL+SHIFT+O
import sec12.exam03_import.hankook.SnowTire;
import sec12.exam03_import.hundai.Engine; //Engine클래스는 패키지명을 생략하여, 사용가능
import sec12.exam03_import.kumho.BigWidthTire;
public class Car {
//필드
Engine engine = new Engine();
SnowTire tire1 = new SnowTire();
BigWidthTire tire2 = new BigWidthTire();
//Tire클래스는 2개의 패키지에 존재하여, 중복되어 있으므로 혼란을 방지하기위하여 패키지명.클래스명 형식으로 사용한다.
sec12.exam03_import.hankook.Tire tire3 = new sec12.exam03_import.hankook.Tire();
sec12.exam03_import.kumho.Tire tire4 = new sec12.exam03_import.kumho.Tire();
}
✔️ 상속
상속이란
- 자식 클래스가 부모 클래스의 멤버를 물려받는것
클래스 상속 ( extends )
- 자식 클래스가 상속할 부모 클래스를 지정하는 키워드
class 자식 클래스 extends 부모클래스1 { }
- new연산자 : 메모리 생성연산자(힙영역)
- new연산자가 DmbCellPhone클래스의 상속관계를 먼저 확인 후
- 상속되어 있으면, 부모클래스의 메모리를 먼저생성한다.
- 자식(자신)클래스의 메모를 생성한다.
- 부모생성자 호출- 자식(자신)생성자 호출 순서로 진행이 된다.
부모 생성자 호출 ( super(...) )
- 부모 생성자는 반드시 자식 생성자의 첫 줄에 위치한다.
- 부모 생성자가 없다면 컴파일 오류 발생
✔️ 메소드 재정의
Overloading | Overriding |
중복정의 | 재정의 |
하나의 클래스 안에서 동일한 이름을 여러개 사용 | 부모클래스의 메서드 명을 자식클래스에서 동일하게 사용하며, 자식클래스에서 내용을 변경하는 것. |
@Override
- 컴파일러에게 부모 클래스의 메소드 선언부와 동일한지 검사를 지시한다.
'🏃♀️ Do it ! > TIL' 카테고리의 다른 글
MySQL설치하기 (0) | 2022.09.15 |
---|---|
final 클래스 / 접근 제한자 / 오라클 설치 (0) | 2022.09.14 |
객체 / 클래스 / 생성자 / 메소드 (0) | 2022.09.08 |
자바 배열 / 열거 타입 (0) | 2022.09.07 |
연산자 / 이클립스 디버깅 (0) | 2022.09.06 |