일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 추상화
- 프림알고리즘
- 열거형
- 최소신장트리
- python
- 백준
- 17472
- this
- 내부 클래스
- 버퍼비우기
- java
- 추상 클래스
- 인터페이스
- Scanner
- 객체 지향
- nextInt
- 제네릭
- inheritance
- Encapsulation
- 객체지향
- 와일드카드
- 상속
- 생성자
- polymorphism
- enum
- 다형성
- abstract
- 캡슐화
- Final
- Today
- Total
쫑쫑이의 블로그
열거형(Enum)과 제네릭, 예외처리 본문
열거형은 관련있는 내용들을 모아 상수로 선언하는 자바 문법 요소이다
0부터 차례대로 자동으로 인덱싱된다
switch문 안에서 열거형을 사용할 수 있다
enum Weeks { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }
제네릭이란 변수 타입을 정하지않고 일반화하여 정의한 후
인스턴스를 선언할 때 매개변수에 타입을 적어 사용하는 자바 문법 요소이다
클래스 선언 시 클래스 뒤에 <> 사이에 타입 매개변수를 적어 사용한다
ex) <T>, <K, V> 등
제네릭 클래스에서는 클래스 변수를 사용할 수 없다
그 이유는 클래스 변수는 인스턴스를 생성하지 않고 호출할 수 있기 때문에
타입이 정해지지않은 변수를 호출해야하는 경우가 생길 수 있기 때문이다
* 제네릭 메서드는 static 키워드를 사용할 수 있다
제네릭 클래스의 범위를 제한하는 방법
<T extends A>
타입 매개변수 T는 A(클래스) 또는 A의 하위 클래스로 제한한다
클래스 외에 인터페이스(B)를 추가할 때는 <T extends A & B> 와 같이
클래스 뒤에 &와 인터페이스를 적는다
와일드카드 '?' 는 제네릭으로 선언된 클래스를 파라미터로 받을 때
파라미터의 범위를 제한하기 위해 사용한다
와일드카드로 범위를 제한하는 방법은 2가지가 있다
Class_A<? extends A> class_A
파라미터는 A(클래스) 또는 A의 하위 클래스로 제한한다
Class_A<? super A> class_A
파라미터는 A 또는 A의 상위 클래스로 제한한다
예외 처리는 프로그램이 비정상적으로 종료되는 것을 막고
지정된 코드를 실행하는 것이다
컴파일 에러는 단순 문법적 오류이며, 기본적으로 IDE가 알려준다
런타임 에러는 실행했을 때 나타나는 오류로 개발자가 의도하지 않았는데
빠뜨리거나 실수 또는 고려하지 않아 발생한 오류이다
try - catch 문을 사용하여 예외처리를 하는데
try 안에 오류가 발생할 수 있는 코드를 적고
catch문의 파라미터로 받는 오류가 발생하면
catch문 안에 있는 코드를 실행한다
finally를 선택적으로 작성가능한데 앞의 작업들이 끝나면 항상 실행한다
예외전가 throw / throws
throw 키워드를 통해 오류를 강제로 발생시킬 수 있다
throws를 메서드 뒤에 발생할 수 있는 에러와 함께 적고
메서드 내에서 에러가 발생하면 메서드가 실행된 곳으로
예외 처리 책임을 전가한다
try 안에 적어서 catch에서 예외 처리하게끔함
'공부 > JAVA' 카테고리의 다른 글
버퍼 비우기(Scanner nextInt) (0) | 2022.09.09 |
---|---|
객체지향 4대 특성 - 추상화 (Abstract) (0) | 2022.09.07 |
객체지향 4대 특성 - 다형성 (Polymorphism) (0) | 2022.09.07 |
객체지향 4대 특성 - 캡슐화 (Encapsulation) (0) | 2022.09.06 |
객체지향 4대 특성 - 상속 (Inheritance) (0) | 2022.09.06 |