FS_hansol
[JAVA] MORE.1 본문
래퍼클래스(객체임)
참조형 변수
주소값(객체의 참조값)을 저장한 변수
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 |