Java

[Java 기초 공부] 클래스(class)

동그리담 2023. 12. 21. 15:23

클래스 선언 - 소스 파일명과 동일하게 선언

가변길이 매개변수 (데이터타입 ... 변수명)

 

필드 : 필드 = 값

생성자 클래스 변수 = new 클래스(); 

메소드 : 메소드 = (매개값1,매개값2 .....){}; -> return 값이 있으면 

오버로딩 - 메소드 이름은 같지만 타입,개수, 순서가 다른 메소드

인스턴스 맴버 - 객체에 소속된 맴버, 객체가 있어야만 사용할 수 있다.

this - 내부에서 인스턴스 필드임을 강조할때 사용할때 사용 (필드명이 같을때 this를 사용하는 것과 안하는 것은 값이 달라질 수있음)

정적(static) 맴버 - 객체 생성 할 필요 없이 클래스를 통해 바로 사용가능 (생성자가 필요 없이 클래스명.필드or메소드명(매개값))

정적 블록 - 복잡한 초기화 작업이 필요할때 static필드를 초기화하는데 사용 ex)  static {...}

정적 메소드, 블록은 인스턴스 필드,메소드 사용불가하고 this또한 사용 불가하다.(객체 생성시 사용 가능)

final - 필드 선언 시에 초기값 대입, 생성자에서 초기값 대입을 제외하고는 값 변경불가 ex) final 타입 필드 [=초기값];

상수 - 이름은 모두 대문자 절대 변하면 안되는 수

패키지(Package) - 자바에서 패키지는 단순히 디렉토리(Diretory)만을 의미하지는 않고 패키지 이름은 주로 도메인 이름의 역순 ex)com.naver.Webtoon.projectname

import 문 - 같은 패키지에 있는 클래스는 조건 없이 사용할 수 있지만, 다른 패키지는 import를 맨윗줄에 사용 

ex) import com.hankook.클래스명; 다수 클래스 ex) import com.hankook.*;

만약 위에서 hankook.project 패키지 안에 있는 클래스도 사용해야한다면 import com.hankook.project 와 같이 따로 import해야함

import 없이 사용할경우 com.hankook.클래스명 변수명 = new com.hankook.클래스명();

- 여러개를 import하고 사용할 시에 다른 패키지에 같은 클래스명이 있다면 위 같이 사용(안그러면 Error)

접근 제한자

접근 제한자 제한 대상 제한 범위
public 클래스,필드,생성자,메소드 없음
protected 필드,생성자,메소드 같은 패키지, 자식 객체만 사용 가능
(default) 생략 클래스,필드,생성자,메소드 같은 패키지
private 필드,생성자,메소드 객체 내부

 

Getter와 Seeter

객체 외부에서 마음대로 읽고 변경할 경우 무결성이 깨지는 것을 방지하기 위해 메소드를 통해 필드에 접근 하게 하는 방식.

Setter - 저장할때 사용

Getter (boolean일땐 is) - 읽어올때 사용

싱글톤 패턴

애플리케이션 전체에서 단 한개의 객채만 생성해서 사용하고 싶을때

생성자를 private로 접근 제한

싱글톤 클래스
//private 접근 권한을 갖는 정적 필드 선언과 초기화
private static Singleton(클래스명) singleton(변수명) = new 클래스()

//private 접근 권한을 갖는 생성자 선언
private 클래스() {}

//public 접근 권한을 갖는 정적 메소드 선언
public static 클래스 getInstance(){ return singleton; }

메인 클래스에서 가져올 때
Singleton obj1 = new Singleton(); <- 생성자 사용 불가
Singleton obj1 = Singleton.getInstance();