java 13

[Java, 제네릭] 제네릭 정리

제네릭 클래스제네릭을 사용하면 코드 재사용과 타입 안정성을 확보할 수 있다.public class GenericBox { private T value; public void set(T value) { this.value = value; } public T get() { return value; }}- ``를 사용한 클래스를 제네릭 클래스라 한다. `` 기호는 보통 다이아몬드라 한다.- 제네릭 클래스를 사용할 때는 타입을 미리 결정하지 않는다- 대신에 클래스명 오른쪽에 ``와 같이 선언하면 제네릭 클래스가 된다.   - 여기서 `T`를 타입 매개변수라 한다.   - 이 타입 매개변수는 이후에 여러 타입으로 변할 수 있다- 그리고 클래스 내부에 `T` 타입이 필요한 곳에 타입 매개변수를 적어두면 된다 n..

Java 2024.11.01

[Java, 예외처리] 예외처리 활용 방법

정상, 예외 흐름 분리try { client.connect(); client.send(data); client.disconnect(); // 예외 발생시 무시} catch (NetworkClientExceptionV2 e) { System.out.println("[오류] 코드: " + e.getErrorCode() + ", 메시지: " + e.getMessage());} - 하나의 `try`안에 정상 흐름을 모두 담는다.- 그리고 예외 부분은 `catch`블럭에서 해결한다.- 정상 흐름은 `try`블럭에 들어가고, 예외 흐름은 `catch` 블럭으로 명확하게 분리할 수 있다.  문제: 외부 연결과 같은 자바 외부의 자원은 자동으로 해제가 되지 않는다. 따라서 외부 자원을 사용한 후에는 연결을 해제해서 외..

Java 2024.10.29

[Java, 예외처리] 예외처리 정리

자바는 프로그램 실행 중에 발생할 수 있는 예상치 못한 상황, 즉 예외(Exception)를 처리하기 위한 메커니즘을 제공한다. 이는 프로그램의 안정성과 신뢰성을 높이는 데 중요한 역할을 한다. 자바의 예외 처리는 다음 키워드를 사용한다:`try`, `catch`, `finally`, `throw`, `throws` 그리고 예외를 다루기 위한 예외 처리용 객체들을 제공한다.- `Object`: 자바에서 기본형을 제외한 모든 것은 객체이기 때문에 예외도 객체이다. 모든 객체의 부모는 `Object`이므로 예외의 최상위 부모도 `Object`이다.- `Throwable`: 최상위 예외이다. 하위에 `Exception`과 `Error`가 있다.- `Error`: 메모리 부족이나 심각한 시스템 오류와 같이 애플..

Java 2024.10.29

[Java, Object] Object 클래스 정리

Object 클래스- 자바에서 모든 클래스의 최상위 부모 클래스는 항상 Object 클래스이다.- 클래스에 상속 받을 부모 클래스가 없으면 묵시적으로 `Object` 클래스를 상속 받는다. 자바에서 Object 클래스가 최상위 부모 클래스인 이유모든 클래스가 object 클래스를 상속 받는 이유는 다음과 같다.- 공통 기능 제공- 다형성의 기본 구현 공통 기능 제공 - 객체의 정보를 제공하고, 이 객체가 다른 객체와 같은지 비교하고, 객체가 어떤 클래스로 만들어졌는지 확인하는 기능은 모든 객체에게 필요한 기본 기능이다. - 이런 기능을 객체를 만들 때 마다 항상 새로운 메서드를 정의해서 만들어야 한다면 상당히 번거로울 것이다.- 만든다고 해도 개발자마다 서로 다른 이름의 메서드를 만들어서 일관성이 없을 ..

Java 2024.10.26

[Java, 다형성] 다형성 정리2 - 추상 클래스, 인터페이스

추상 클래스- 부모 클래스는 제공하지만, 실제 생성되면 안 되는 클래스를 추상 클래스라 한다.- 실체인 인스턴스가 존재하지 않고, 상속을 목적으로 사용되면 부모 클래스 역할을 담당한다.abstract class AbstractClass {...} - 추상 클래스는 클래스를 선언할 때 앞에 추상이라는 의미와 `abstract` 키워드를 붙여주면 된다.- 추상 클래스는 기존 클래스와 완전히 같다.- 다만 `new AbstractClass()`와 같이 직접 인스턴스를 생성하지 못하는 제약이 추가된 것이다. 추상 메서드- 부모 클래스를 상속 받는 자식 클래스가 반드시 오버라이딩 해야 하는 메서드- 추상 클래스와 마찬가지로 부모에 선언되며 실체가 존재하지 않기 때문에 메서드 바디가 없다.public abstrac..

Java 2024.10.25

[Java, 다형성] 다형성 정리 1

객체지향 프로그래밍의 대표적인 특징으로는 캡슐화, 상속, 다형성이 있다. - 다형성(Polymorphism)은 이름 그대로 "다양한 형태", "여러 형태"를 뜻한다. - 다형성은 한 객체가 여러 타입의 객체로 취급될 수 있는 능력을 뜻한다.- 보통 하나의 객체는 하나의 타입으로 고정되어 있지만, 다형성을 사용하면 하나의 객체가 다른 타입으로 사용될 수 있다. 다형성을 이해하기 위해서는 2가지 핵심 이론을 알아야 한다- 다형적 참조- 메서드 오버라이딩다형적 참조- 부모 타입의 변수는 자식 타입까지 참조할 수 있다.- 만약 손자가 있다면 손자도, 그 하위 타입도 참조할 수 있다.- 자신을 기준으로 모든 자식 타입을 참조할 수 있다.- 자식이 부모를 참조하지는 못한다.- 다양한 형태를 참조할 수 있다고 해서 ..

Java 2024.10.24

[Java, final] final 정리

`final`은 `class`, `method`를 포함한 여러 곳에 붙을 수 있다. `final`키워드가 붙으면 더는 값을 변경할 수 없게 된다. `final`이 어떻게 쓰이는지 알아보자`final` + 지역변수- final을 지역 변수에 설정한 경우 최초 한번만 할당할 수 있다. 이후에 변수의 값을 변경하려면 컴파일 오류가 발생한다.- final을 지역 변수 선언시 바로 초기화 한 경우 이미 값이 할당되었기 때문에 값을 할당할 수 없다.- 매개변수에 final이 붙으면 메서드 내부에서 매개변수의 값을 변경할 수 없다. 따라서 메서드 호출 시점에 사용된 값이 끝까지 사용된다.//final 지역 변수1final int data1;data1 = 10; //최초 한번만 할당 가능//data1 = 20; //컴..

Java 2024.10.23