
println() 메서드가 대표적인 예시로, 다양한 타입의 데이터를 출력할 수 있음.public class OverloadingExample {
// 정수형 데이터를 받는 메서드
public void print(int num) {
System.out.println("정수: " + num);
}
// 실수형 데이터를 받는 메서드 (같은 이름, 다른 타입)
public void print(double num) {
System.out.println("실수: " + num);
}
// 문자열을 받는 메서드 (같은 이름, 다른 타입)
public void print(String str) {
System.out.println("문자열: " + str);
}
}
public, private 등)와 반환 타입(void, int 등)은 같아도 되고, 달라도 됨.public void aa(int arr) {} // 정수 매개변수
public void aa(double arr) {} // 실수 매개변수
public void aa(String arr) {} // 문자열 매개변수
public void aa(int arr, String str) {} // 매개변수 개수 다름
new 키워드로 객체를 여러 개 만들어도 값이 공유됨.클래스이름.변수이름class Example {
static int sharedValue = 10; // 모든 객체가 공유하는 변수
}
public class StaticExample {
public static void main(String[] args) {
System.out.println(Example.sharedValue); // 10
}
}
클래스이름.메서드이름(매개변수);class StaticMethodExample {
static void staticMethod() {
System.out.println("이것은 static 메서드입니다.");
}
}
public class Test {
public static void main(String[] args) {
StaticMethodExample.staticMethod(); // 클래스 이름으로 호출
}
}
int[] arr = new int[5]; // 길이가 5인 정수 배열 선언
arr은 참조변수이며, 배열을 가리킨다.for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]); // 배열 요소 출력
}
for (int a : arr) {
System.out.println(a); // 배열 요소 출력
}
for문과 비슷한 역할을 수행함.import java.util.ArrayList;
import java.util.Iterator;
public class IteratorExample {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next()); // 요소 하나씩 출력
}
}
}
| 개념 | 설명 |
|---|---|
| Getter | 클래스의 private 변수 값을 반환(조회)하는 메서드 |
| Setter | 클래스의 private 변수 값을 변경(설정)하는 메서드 |
| 사용 목적 | 캡슐화(Encapsulation) 원칙을 따르며, 데이터 보호 및 접근 제한을 위해 사용 |
| 작성 방식 | get변수명() (조회) / set변수명(값) (설정) |
| 특징 | - private 필드에 직접 접근을 막고, 안전한 데이터 조작을 보장- getter는 값을 반환하고, setter는 값을 변경 |
문제 7. 주어진 Produt 클래스에 Getter와 Setter 추가하기
public class Product {
private int code;
private String name;
// Getter for code
public int getCode() {
return code;
}
// Setter for code
public void setCode(int code) {
this.code = code;
}
// Getter for name
public String getName() {
return name;
}
// Setter for name
public void setName(String name) {
this.name = name;
}
}
public class Main {
public static void main(String[] args) {
Product p = new Product();
// Setter 사용 (값 설정)
p.setCode(101);
p.setName("Laptop");
// Getter 사용 (값 조회)
System.out.println("상품 코드: " + p.getCode());
System.out.println("상품 이름: " + p.getName());
}
}
출력 결과
상품 코드: 101
상품 이름: Laptop
| 항목 | 설명 |
|---|---|
| 캡슐화 | private 변수에 직접 접근을 제한하고, 안전한 데이터 관리 가능 |
| 유효성 검사 | setter에서 데이터 검증을 추가할 수 있음 |
| 읽기 전용 필드 | getter만 제공하여 변경 불가능한 속성으로 설정 가능 |
| 쓰기 전용 필드 | setter만 제공하여 외부에서 읽을 수 없도록 설정 가능 |
| 자동 생성 기능 | @Getter, @Setter (Lombok 사용 시)로 자동 생성 가능 |
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Product {
private int code;
private String name;
}
@Getter와 @Setter 어노테이션만 추가하면 자동으로 생성됨.| 개념 | 설명 |
|---|---|
| 오버로딩 | 같은 이름의 메서드를 매개변수(타입, 개수, 순서)로 구별하여 여러 개 정의하는 것 |
| 오버로딩 작성법 | 제한자, 반환 타입과 상관없이 같은 이름, 다른 매개변수 필요 |
| static 필드 | 객체가 공유하는 클래스 변수 |
| static 메서드 | 객체 없이 호출 가능하지만 this 사용 불가 |
| 배열의 장점 | 순회 가능, 인덱스 제어 가능, 기본값 자동 초기화 |
| Iterator | 컬렉션 요소를 순차적으로 접근하는 방식 |