제너릭 클래스 , 인터페이스는 형태만 만들어놓은 것을 말합니다.
전 시간에 배웠던 추상클래스, 인터페이스는 함수의 형태자체를 구현해 놓기만 하고 상속하거나 확장하여 필요한 대로 만들어 사용했습니다.
하지만 제너릭 클래스는 타입 자체도 사용자가 필요한 타입에 맞게 만드는것을 제너릭 클래스 라고합니다.
제너릭의 사용형태는 다음과 같습니다.
public class MyClass<T> {
private T type;
public void Set(T t) { this.type = t;}
public int Get(){return type;}
}
<T> 로 구현된 부분은 타입이 들어옵니다. 필요한 타입을 넣으면 됩니다.
쉽게말해 추상클래스 인터페이스는 기본 설계는 되어있고 세세한 부분을 개발자가 필요에따라 조작하는 것이라면.
제너릭타입은 큰그림을 간단히 그려놓고 설계및 필요한 타입을 개발자가 타입에 맞게 설계 하여 사용하는것입니다.
MyClass를 사용하는 방법은 다음과 같습니다.
public class Main{
public static void main(String[] args){
MyClass<Integer> myClass = new MyClass<Integer>();
myClass.Set(10);
System.out.println("My class ==> " + myClass.Get());
}
}
정수형 타입은 int 타입이지만 Integer 형태의 Wrapper 클래스를 이용해야만 합니다.
Wrapper 클래스는 박싱된 형태의 클래스입니다.
자바에선 데이터 자료형을 특정 인스턴스의 값에 전달할때 Primary한 값으로 넘길수 없습니다.
그래서 자바에서 압축된 Wrapper 클래스로 정의된 Wrapper 클래스를 이용해야합니다.
다음은 Wrapper 클래스와 기본 자료형 타입에 대한 내용입니다.
추상클래스를 상속을 받고 함수의 몸체를 구현하지 않는다면 에러가 발생한다.
상속을 받은 클래스에서 몸체를 구현 해줘야하는게 키 포인트이다.
자바에서 예외처리는 중요합니다.
C/C++는 컴파일 타임에 모든걸 확인하는 언어이지만 Java는 런타임에 오류검출및 문법이 엄격합니다.
그래서 파일입출력, 네트워킹 프로그래밍등 개발자의 실수로 문제 발생 여지를 최소화 하기위해 예외처리를 반드시 하라고 명시합니다.
예외처리의 종류는 여러가지 있으나 스터디에선 간단한 사용방법 몇가지만 알아보도록 하겠습니다.
예외처리를 알기위해선 기본적인 개념을 알필요가 있습니다.
예외처리는 예외를 발생시키는 예외 객체를 던지는 지점(Throw) 와 예외를 받는 (Catch)지점이 존재합니다.
예외가 발생하여 던지게 되면 아래 코드 문장은 실행하지 않게 됩니다.
쉽게 말하면 if - else 문은 위에서 아래로 조건이 발생한다면 해당되는 문장을 실행하고 아래 문장을 실행시키는게 일반적입니다. 하지만 예외처리가 발생되어 객체를 던진구간이 생긴다면? 아래 문장은 실행하지않고 예외를 받는 지점으로 이동해버립니다.
예외처리는 try로 시작해 catch로 끝납니다.
try{
// 예외가 발생 예상되는 지점
}
catch(){
// 예외를 받는 지점.
}
- 수를 0으로 나누려고할때
public class Main{
public static void main(String[] args){
try{
int i = 10 / 0;
System.out.println(i);
}
catch(ArithmeticExcpedtion e){
System.out.println(e);
}
}
}
- 배열의 인덱스를 초과 할때
public class Main{
public static void main(String[] args){
try{
int[] myArray = new int[3];
myArray[10] = 1000;
}
catch(ArrayIndexOutOfBoundException e){
System.out.println(e);
}
}
}
- throw를 이용하여 강제 예외 처리 해주기.
public class Main{
public static void main(String[] args){
int a = 0;
if(a == 1){
System.out.println("Hello world");
}
else{
try{
if(a == 0){
throw new Exception();
}
else{
System.out.println("no");
}
}
catch(Exception e){
System.out.println("예외 처리 완료");
}
}
}
}
Java Study 혼자 해보기 문제 (0) | 2021.11.07 |
---|---|
Java Interface / 추상클래스 - Class 5 (0) | 2021.10.19 |
Java Inheritance class -4 (0) | 2021.10.11 |
Java I/O , class -3 (0) | 2021.09.26 |
Java Variable, Loop, Flow Control -2 (0) | 2021.08.29 |
Java 개발환경 설정-1 (0) | 2021.08.29 |