전체 글
-
Chained Exception, 실제 예외 처리 방법Java/Java 문법 종합반 강의 정리 2024. 1. 2. 15:45
연결된 예외(Chained Exception) - 예외는 다른 예외를 유발할 수 있다. - 예외 A가 예외 B를 발생시켰다면, 예외 A는 B의 원인 예외이다. - 원인 예외를 새로운 예외에 등록한 후 다시 새로운 예외를 발생시키는데, 이를 예외 연결이라고 한다. 예외를 연결하는 이유는? - 여러가지 예외를 하나의 큰 분류의 예외로 묶어서 다루기 위함이다. 트래킹(trekking)이 편함 - checked exception 을 unchecked exception 으로 포장(wrapping) 하는데 유용하게 사용되기도 한다. 원인 예외를 다루기 위한 메소드 - initCause() - 지정한 예외를 원인 예외로 등록하는 메소드 - getCause() - 원인 예외를 반환하는 메소드 // 연결된 예외 publ..
-
에러와 예외Java/Java 문법 종합반 강의 정리 2024. 1. 2. 14:25
오류(Error)는 일반적으로 회복이 불가능하다. - 이는 시스템 레벨에서, 또는 주로 환경적인 이유로 발생한다. - 코드의 문제로 발생하는 경우도 있지만, 일단 발생하는 경우 일반적으로 회복이 불가능하다. - 에러가 발생한 경우 우리는 어떠한 에러로 프로그램이 종료되었는지를 확인하고 대응한다. 예외(Exception)는 일반적으로 회복이 가능하다. - 회복이 가능하다는 전제는 우리가 "그 예외를 발생할 수 있다는 것을 인지하고, 대응했을 것 이다." - 현실적으로 코드레벨에서 할 수 있는 문제상황에 대한 대응은 "예외처리"에 속한다. 코드실행 관점에서 예외의 종류 컴파일 에러 - .java 파일을 .class 파일로 컴파일할 때 발생하는 에러 - 대부분 자바 프로그래밍 언어의 규칙을 지키지 않았기 떄문..
-
default 메서드, static 메서드, 형변환Java/Java 문법 종합반 강의 정리 2024. 1. 1. 00:25
default 메서드 : 디폴트 메서드는 추상 메서드의 기본적인 구현을 제공받는 메서드이다. - 메서드 앞에 default 키워드를 붙히며 블럭{} 이 존재해야한다. - default 메서드 역시 접근 제어자가 public 이며 생략이 가능하다. - 추상 메서드가 아니기 때문에 인터페이스의 구현체들에서 필수로 재정의 할 필요는 없다. public class Main implements A { @Override public void a() { System.out.println("A"); } public static void main(String[] args) { Main main = new Main(); main.a(); // 디폴트 메서드 재정의 없이 바로 사용가능합니다. main.aa(); } } in..
-
인터페이스의 개념과 특징Java 2023. 12. 31. 22:25
인터페이스 : 상속관계가 없은 다른 클래스들이 서로 동일한 행위 즉, 메서드를 구현해야할 때 인터페이스는 구현 클래스들의 동일한 사용 방법과 행위를 보장해 줄 수 있다. - 인터페이스는 스펙이 정의된 메서드들의 집합이다. - 인터페이스의 구현 클래스들은 반드시 정의된 메서드들을 구현해야 한다. - 따라서 구현 클래스들의 동일한 사용 방법과 행위를 보장해 줄 수 있다. - 이러한 특징은 인터페이스에 다형성을 적용할 수 있게 만들어 준다. 인터페이스의 멤버 - 모든 멤버변수는 public static final 이어야한다. - 모든 메서드는 public abstract 이어야 한다. - 하지만 생략되는 제어자는 컴파일러가 자동으로 추가해 주기에 알아만 두도록 하자. (static, default 제외) 인터..
-
추상 클래스의 개념, 인터페이스와의 차이점Java 2023. 12. 31. 20:54
클래스가 설계도라면, 추상 클래스는 미완성된 설계도이다. - abstract 키워드를 사용하여 추상 클래스를 선언할 수 있다. - 추상 클래스는 추상 메서드를 포함할 수 있다. (일반적인 메서드 또한 포함할 수 있다.) - 추상 메서드가 없어도 추상 클래스로 선언할 수는 있다. - 추상 클래스는 자식 클래스에 상속되어 자식 클래스에 의해서만 완성될 수 있다. - 추상 클래스는 여러개의 자식 클래스들에서 공통적인 필드나 메서드를 추출해서 만들 수 있다. 추상 메서드 - abstract 키워들르 사용하여 추상 메서드를 선언할 수 있다. - 추상 메서드는 일반 메서드와는 다르게 블록{} 이 없다 - 즉, 정의만 할 뿐, 실행 내용은 가지고 있지 않다. 추상 클래스 상속 - 마찬가지로 extends 키워드를 사..
-
접근 제어자Java/Java 문법 종합반 강의 정리 2023. 12. 31. 14:42
접근 제어자 : public, protected, default, private 그 외 제어자 : static, final, abstract 접근 제어자 : 외부에서 접근하지 못하도록 제한한다 클래스, 멤버변수, 메서드, 생성자에 사용되고, 지정되어 있지 않다면 default 입니다. - public : 접근 제한이 전혀 없다. - protected : 같은 패키지 내에서, 다른 패키지의 자손클래스에서 접근이 가능합니다. - default : 같은 패키지 내에서만 접근이 가능합니다. - private : 같은 클래스 내에서만 접근이 가능합니다. 사용가능한 접근 제어자 - 클래스 : public, default - 메서드 & 멤버변수 : public, protected, default, private - ..
-
매개변수의 종류(기본형, 참조형)와 차이Java/Java 문법 종합반 강의 정리 2023. 12. 30. 19:50
아래와 같은 메서드들이 있다. public class Tire { String company; // 타이어 회사 public Tire() {} } Tire setTire(Tire tireCompany) { tireCompany.company = "KIA"; // 금호 타이어를 전달 받았지만 강제로 KIA 타이어로 교체 tire = tireCompany; return tire; } double brakePedal(char type) { speed = 0; type = 'P'; // 정지 후 매개변수 type을 어떤 타입으로 전달 받았는지 상관없이 'P'로 고정시키기 changeGear(type); return speed; } 이 메서드들을 사용하여 기본형 매개변수와 참조형 매개변수의 차이를 알아보자. pu..
-
for-each문을 향상된 for문이라고 부르는 이유Java 2023. 12. 30. 16:44
for문을 사용하다가 for-each문을 알게 되면 자연스레 for-each문만을 사용하게 된다. 그 이유는 인덱스 값을 사용할 필요가 없을 경우, 컬렉션의 값을 순회하는 코드가 훨신 간결해지기 때문이다. 또한 for문은 반복횟수를 정확히 알고 있어야 하니, 가능 여부는 둘째치고 상대적으로 번거로운 것은 확실하다. 하지만 이러한 편리함 때문에 for-each문을 향상된 for문이라고 부르는 것은 아니다. for문과 for-each문은 내부적인 로직이 다르다. (더 깊은 조사는 실패...) 따라서 루프를 도는 속도 또한 다르다. for문은 List, ArrayList를 순회할 때 for-each문 보다 빠르며, (데이터의 크기에 따라 다르지만, 개인적인 실험으로는 1.2배 정도로 확인됐다.) for-eac..