본문 바로가기

백앤드 개발/Java & Spring

[Java] Java 객체 지향

1. 객체 지향 언어

sw 개발에서 사용되는 프로그래밍 개념

객체라는 기본적인 단위와 객체 간 상호 작용을 통해 프로그램을 구현하는 것을 의미

객체 지향 언어는 클라스와 인스턴스 중심으로 돌아감

 

2. 클래스

객체를 만들기 위한 설계도로 객체 생성에 사용

클래스는 객체의 상태를 나타내는 필드(변수)와 객체의 행동을 나타내는 메소드로 구성

 

3. 접근 제한자

외부에서 데이터 오염을 막기 위해 객체에 대한 접근을 제어할 수 있음

 

1) public: 모든 접근 허용
2) protected: 같은 패키지 또는 상속 관계의 하위 클래스에서 접근 허용
3) default: 같은 패키지에 있는 객체들만 접근 허용

4) private: 가장 엄격. 동일한 클래스(객체) 내에서만 접근 허용

 

4. Getter & Setter

객체 지향 프로그래밍에서 객체의 데이터는 외부로부터의 직접 접근을 제어.

대신 메소드를 통해 데이터를 조회하거나 (Getter)  유효한 값으로 변경 (Setter)

한마디로 private 으로 선언한 값을 변경하고 가져다 쓰기 위해 사용하는 메서드.

getter, setter 생성: source > generate getter setter > 필드 지정

 

package lec04;


/**
 * 구매품목 데이터 값 저장
 * @author gram17
 *
 */

public class ProcureitemVO {
	// 접근 제한자: 외부에서 데이터 오염을 막기 위해 객체에 대한 접근을 제어할 수 있다.
	// ex) 병렬 프로그래밍할때 데이터 오염을 막기 위해 접근 제한자를 사용
	
	private int id;
	private String name;
	private int quantity;
	private int price;
	
	
	// getter, setter: private 으로 선언한 값을 변경하고 가져다 쓰기 위해 사용	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getQuantity() {
		return quantity;
	}
	public void setQuantity(int quantity) {
		this.quantity = quantity;
	}
	public int getPrice() {
		return price;
	}
	public void setPrice(int price) {
		this.price = price;
	}
	
	
	// toString(): 값을 문자열 형태로 로그에 찍어 값의 형태 형태 파악
	// source > generate toString() > 필드 지정
	
	@Override
	public String toString() {
		return "ProcureitemVO [id=" + id + ", name=" + name + ", quantity=" + quantity + ", price=" + price + "]";
	}
}

 

 

package lec04;

// 메인메소드 출력
public class ObjClass01 {
	public static void main(String[] args) {
		
		ProcureitemVO procureitemVO = new ProcureitemVO();
		
		System.out.println("아무것도 세팅하지 않은 객체 ::: " + procureitemVO.toString());
		procureitemVO.setId(1);
		procureitemVO.setName("옥수수");
		procureitemVO.setPrice(10000);
		procureitemVO.setQuantity(2);
		
		System.out.println("아무것도 세팅하지 않은 객체 ::: " + procureitemVO.toString());
		
	}

}

//	출력결과
//	아무것도 세팅하지 않은 객체 ::: ProcureitemVO [id=0, name=null, quantity=0, price=0]
//	아무것도 세팅하지 않은 객체 ::: ProcureitemVO [id=1, name=옥수수, quantity=2, price=10000]

 

 

5. Static

정적 변수 또는 메서드. 모든 인스턴스/매서드를 객체 생성없이 사용 가능
데이터 공유, 공통 메서드를 구현에 유용

일반적인 메서드는 메모리의 Heap 영역에서 

일반적인 메서드는  Garbage Collector에 의해 자동으로 삭제되지만 static 은 관리 받지 못함

과도하게 많은 static 은 과부하의 원인이 되기 때문에 남발 X

 

 

6. 기타 코멘트

1) /** + enter: 클래스 주석 작성

2) toString() : 필드를 지정해 문자열 형태로 로그 찍을 때 사용

 

 

'백앤드 개발 > Java & Spring' 카테고리의 다른 글

[Java] 컬렉션 프레임워크 실습  (0) 2023.10.19
[Java] 컬렉션 프레임워크  (1) 2023.10.19
[Java] Java 객체 지향2  (0) 2023.10.18
[Java] 메소드와 변수  (1) 2023.10.10
[Java] JVM과 JRE  (0) 2023.10.10