Language/Java 37

34. 제네릭과(Generic) 컬렉션 프레임워크(Collection Framework)

1. 제네릭(Generic) 개념제네릭은 다양한 타입을 다룰 수 있는 클래스나 메소드를 작성할 수 있게 해주는 기능제네릭을 사용하면 컴파일 시 타입 체크를 할 수 있어, 타입 안정성을 높이고, 형변환을 줄일 수 있음제네릭 사용 예제public class Box { private T item; public void set(T item) { this.item = item; } public T get() { return item; }}public class Main { public static void main(String[] args) { Box stringBox = new Box(); stringBox.set("Hello")..

Language/Java 2024.06.27

33. 배열(2)

1. 배열 다루기1) 배열 복사Arrays 클래스의 copyOfRange 메소드를 사용하여 배열의 일부분을 복사할 수 있음System.arraycopy, Arrays.copyOf, Arrays.copyOfRange 등의 메소드를 사용하여 배열을 복사할 수 있예제char[] charArray = {'H', 'e', 'l', 'l', 'o', '!'};char[] subArray = Arrays.copyOfRange(charArray, 1, 4);System.out.println(Arrays.toString(subArray)); // 출력: [e, l, l]copyOfRange 메소드는 원본 배열에서 특정 범위의 요소들을 새로운 배열로 복사함2) 배열 정렬Arrays 클래스의 sort 메소드를 사용하여 배열..

Language/Java 2024.06.27

32. 배열(1)

1. 배열1) 배열의 기본 개념배열은 같은 타입의 여러 변수를 하나의 자료구조로 관리할 수 있는 데이터 구조배열은 참조 타입이며, 같은 타입의 변수가 여러 개 필요할 때 사용함2) 배열 선언 및 초기화배열을 선언하는 방법int[] array1;int array2[];배열을 초기화하는 방법array1 = new int[5]; // 크기가 5인 정수 배열 생성배열 선언과 동시에 초기화int[] array3 = {1, 2, 3, 4, 5};3) 배열 사용 예제배열을 선언하고 초기화한 후, 각 요소에 접근하여 값을 설정하거나 가져올 수 있음int[] array = new int[5];array[0] = 10;array[1] = 20;//...System.out.println(array[0]); // 10 출력배..

Language/Java 2024.06.27

31. 익명 클래스(Anonymous)와 람다(Lamda)

1. 익명 클래스(Anonymous Class)익명 클래스는 이름이 없는 클래스익명 클래스는 클래스를 정의하면서 동시에 인스턴스를 생성함익명 클래스는 일반적으로 일회성으로 사용되며, 특정 클래스나 인터페이스를 구현하는 객체를 즉석에서 생성할 때 사용됨익명 클래스 예public abstract class Car { public abstract void drive();}public class Main { public static void main(String[] args) { Car myCar = new Car() { @Override public void drive() { System.out.println("Drivi..

Language/Java 2024.06.27

30. 팩토리 메소드 패턴과 리플렉션(Reflection)

1. 팩토리 메소드 패턴팩토리 메소드 패턴은 객체 생성의 복잡한 과정을 감추고, 객체를 생성하는 인터페이스를 제공하는 디자인 패턴사용자에게는 단순한 인터페이스를 제공하고, 객체 생성의 구체적인 내용은 숨김팩토리 메소드 패턴 예제public interface VehicleFactory { Vehicle createVehicle();}public class CarFactory implements VehicleFactory { @Override public Vehicle createVehicle() { return new Car(); }}public class BusFactory implements VehicleFactory { @Override public Veh..

Language/Java 2024.06.27

29. 인터페이스(2)

1. 인터페이스 기본 문법인터페이스는 클래스와 비슷하게 선언되지만, 클래스와 달리 인스턴스를 생성할 수 없음인터페이스는 다음과 같은 규칙을 따름:인터페이스 이름은 첫 글자가 대문자인 어퍼카멜케이스로 작성함인터페이스의 모든 필드는 public static final이어야 하며, 이는 생략 가능함모든 메소드는 public abstract이며, 역시 생략 가능함1) Java 8에서의 변경 사항Java 8 이전에는 인터페이스에 추상 메소드만 정의할 수 있었음Java 8부터 인터페이스에 default 메소드와 static 메소드를 정의할 수 있게 되었음2) default 메소드의 필요성인터페이스의 메소드를 추가하거나 변경할 때 발생할 수 있는 문제를 해결하기 위해 default 메소드가 도입되었음예를 들어, 인터..

Language/Java 2024.06.27

28. 인터페이스(1) - 로또 번호 생성기

1. 인터페이스의 개념과 역할인터페이스는 클래스가 구현해야 할 메소드의 집합을 정의하는 역할을 함인터페이스 자체는 메소드의 구현을 포함하지 않으며, 클래스가 인터페이스를 구현(implement)하여 메소드를 정의해야 함인터페이스는 객체지향 프로그래밍에서 다형성(polymorphism)을 구현하는데 중요한 역할을 인터페이스 선언public interface LottoMachine { void setBalls(Ball[] balls); void shuffle(); Ball[] getBalls();}인터페이스를 사용하면 코드의 유연성과 재사용성을 높일 수 있음다른 클래스에서 인터페이스를 구현함으로써 다양한 구현체를 만들 수 있음2. 로또 번호 생성기 구현1) Ball 클래스Ball 클래스는 로..

Language/Java 2024.06.27

27. 객체 지향(17) - 접근 제한자

1. 접근 제한자1) 접근 제한자 접근 제한자는 클래스, 메소드, 필드 등에 접근할 수 있는 범위를 제한하는 역할을 함주요 접근 제한자는 public, protected, private, 그리고 default가 있음2) 접근 제한자의 종류와 사용법2.1. publicPublic 접근 제한자는 가장 넓은 범위를 갖음어디서나 접근할 수 있음예: 클래스 내부, 동일 패키지, 상속받은 클래스, 다른 패키지 등에서 모두 접근 가능2.2. protectedProtected 접근 제한자는 클래스 내부, 동일 패키지, 상속받은 클래스에서 접근할 수 있음다른 패키지의 클래스에서는 접근할 수 없음2.3. defaultDefault 접근 제한자는 접근 제한자를 명시하지 않은 경우를 의미함클래스 내부와 동일 패키지에서만 접근..

Language/Java 2024.06.20

26. 객체 지향(16) - final 클래스와 불변 객체

1. final 클래스1) final 클래스란final 클래스는 더 이상 상속될 수 없는 클래스를 말함final 클래스를 사용하면 해당 클래스를 상속받아 새로운 클래스를 만들 수 없음대표적인 final 클래스: String 클래스예제 : final 클래스public final class MyFinalClass { // 클래스 내용}String 클래스는 final 클래스로 선언되어 있기 때문에 상속받을 수 없음예제 : final 클래스 상속 시도public class MyString extends String { // 컴파일 에러 // 상속 불가}2. 불변 객체1) 불변 객체불변 객체는 한 번 생성되면 그 상태를 변경할 수 없는 객체를 말함불변 객체의 대표적인 예: String 클래스불변 객체는..

Language/Java 2024.06.20

25. 객체 지향(15) - 추상 클래스

1. 추상 클래스1) 추상 클래스의 개념추상 클래스는 인스턴스를 생성할 수 없는 클래스를 말함추상 클래스는 추상 메소드를 포함할 수 있으며, 이 추상 메소드는 선언만 있고 구현은 없음추상 클래스는 abstract 키워드를 사용하여 정의함2) 추상 클래스의 특징추상 클래스 자체는 인스턴스를 생성할 수 없고, 해당 클래스를 상속받은 자식 클래스만 인스턴스를 생성할 수 있음추상 클래스는 한 개 이상의 추상 메소드를 가질 수 있음예제 : 추상 클래스 정의public abstract class Car { private String name; public Car(String name) { this.name = name; } // 추상 메소드 선언 public abstract ..

Language/Java 2024.06.20