FS_hansol

[JAVA] MORE.1 본문

Spring_부캠

[JAVA] MORE.1

FS29 2025. 7. 8. 14:23
래퍼클래스(객체임)
참조형 변수
주소값(객체의 참조값)을 저장한 변수

 

toString() : 정수형 -> 문자열 변경

 

래퍼클래스는 원시타입을 객체처럼 다루기 위해 만들어졌습니다.

1) int, boolean같은 기본형은 객체가아니다.

2) 컬렉션(List, Map 등)에 int를 바로 넣을 수 없다.

3) 객체지향 기능(메서드 호출 등)을 쓰려면 객체가 필요하다.

 

 

기본형(primitive type) 숫자, 문자, 논리값 같은 가벼운 값 int, double, char, boolean 등
참조형(reference type) 클래스나 객체 String, Integer, List, Scanner 등

 

따라서 기본형은 "객체"가 아니기 때문에
→ 메서드 못 씀, 컬렉션(List 등)에 못 넣음, null 못 저장함

 

 

Integer b = Integer.valueOf(a); //권장되는 방식
Integer b = new Integer(a); //옛날방식

 

 

int a=10;
Integer b=Integer.valueOf(a); //박싱

//위 코드는 아래와 같다
int a=10;
Integer b=a; //오토박싱
//변수에 그냥 대입했는데 내부적으로 valueOf()가 자동 호출됨

/////////////////////////////////

Integer b=Integer.valueOf(a); //위 코드의 박싱 부분
int a=b; //오토 언박싱

getter

 

숙지

1) private는 반드시 캡슐화를 해야 하며

2) private 사용 시 getter은 필수, setter은 선택이며

3) getter은 읽기 전용이라 return을 써주어야 하고 

4) setter은 값을 변경하고자 할 때 사용하되 void가 아니라서 return 사용을 금한다.

5) 추가로, 변수가 여러 개일 때, getter/ setter는 각각 만들어주어야 한다.

private String name;
private int age;
public String getName() { return name; }
public void setName(String name) { this.name = name; }

public int getAge() { return age; }
public void setAge(int age) { this.age = age; }

 

추가로, 무분별한 setter 방지를 위해 검사를 꼭 넣는 게 원칙입니다.

1) 모든 필드에 setter을 열어두면 누구나 아무 값이나 막 넣을 수 있습니다.

2) 따라서 setter에 유효성 검사를 넣어야합니다.

 

//나쁜 예시
public void setAge(int age) {
    this.age = age; // -> 누가 -100 넣어도 통과됨
}

//좋은 예시
public void setAge(int age) {
    if (age >= 0 && age <= 130) {
        this.age = age;
    }
}

Interface

 

 

윈도우는 Alt+Insert 키를 누르면 탭이 뜹니다.

"메서드 구현"탭에서 엔터 누르면 설정해놓은 인터페이스가 자동으로 불러와집니다.

 

 

 


 

캡슐화와 정보은닉의 차이

 

1) 캡슐화는 도구/기술

2) 정보은닉은 목표/목적

3) 즉, 캡슐화는 정보은닉을 달성하는 수단입니다.

 

캡슐화
(Encapsulation)
데이터 + 기능을 하나로 묶고, 외부 접근 제한 “묶고 통제” private + getter/setter
정보 은닉
(Information Hiding)
불필요한 내부 정보는 숨기고, 꼭 필요한 정보만 제공 “감추기” private 필드 + 내부에서만 처리 가능

 

 

// 캡슐화: 데이터+기능을 묶고 접근제한자 적용
// 정보은닉: 외부에서 balance에 직접 접근 못함

public class BankAccount{
	private int balance;
    
    public void deposit(int amount){
    	if(amount>0) balance+=amount;
    }
    
    public int getBalance(){
		return balance;
	}
}

 

 

 

 

 

 

 

'Spring_부캠' 카테고리의 다른 글

[Java] OOP  (0) 2025.07.16
[Java] SSR & Refactoring  (2) 2025.07.15
[JAVA] Level.1_Calculator  (0) 2025.07.07
[JAVA] Optional, Collection, Generic  (1) 2025.06.30
[JAVA]Optional과 예외 처리 핵심 정리&게터와 세터  (0) 2025.06.25