제네릭
제너릭은 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능입니다.
제네릭의 장점
1.
타입 안정성을 제공한다.
2.
타입 체크와 형변환을 생략할 수 있으므로 코드가 간결해진다.
class Generic<T> {
T item;
void setItem(T item) {
this.item = item;
}
T getItem() {
return item;
}
Java
복사
HashMap의 구조인 key-value쌍으로 구성되어 있다.
그리고 Map의 대표적인 특징은 하나의 key는 정확히 하나의 value만 가질 수 있다는 것입니다
Map의 구조인 key-value쌍으로 구성되어 있다.
그리고 Map의 대표적인 특징은 하나의 key는 정확히 하나의 value만 가질 수 있다.
Hash Map, 배열, Arraylist 비교 정리
종 류 | 배열 | Arraylist | HashMap |
생성 방법 | int[] arr = new int[10]; | List<Integer> list = new ArrayList<>(); | Map<String, Integer> map = new HashMap<>(); |
유연성 | 크기 변경 불가능 | 알아서 늘어남 | 알아서 늘어남 |
데이터 널을 때 | arr[index] = number; | list.add(number): | map.put(”key”, value); |
데이터 수정 | arr[index] = number; | list.set(index, value); | map.put(”key”, value); |
데이터 가져옴 | int data = arr[index]; | int data = list.get(index); | int data = map.get(”key”); |
데이터 지울 때 | 불가능 | list.remove(index); | map.remove(”key”); |
데이터 순회 | for(int i = 0; i < arr.length; i++) {sout(arr[i]); | for(int i = 0; i < list.size(); i++){sout(arr.get(i)}; | for(String key : map.keySet()){ sout(key + “ : “ + arr.get(key));} |
인터페이스
인터페이스란?
•
클래스 다중상속의 장점과 단점은?
◦
장점 : 객체에 다형성을 원하는 만큼 부여할 수 있다.
◦
단점 : 하나의 자식 클래스에 2명 이상의 부모클래스에서 똑같의 형태의 메서드를 2개 이상을 물려받을 수 있다. 이때 자식 클래스에서 해당 메서드를 오버라이드를 하지 않는다면, 모호함이 발생한다. 참고로 자식클래스에서 해당 메서드를 오버라이드 해야할 의무는 없다.
•
클래스 다중상속에서 나타날 수 있는 문제점을 해결할는 방법은?
◦
자식클래스에서 모호한 메서드를 오버라이드 한다.
•
인터페이스와 클래스의 차이점은?
◦
인터페이스는 100% 추상클래스 이다.
◦
인터페이스 안에 있는 메서드는 어차피 추상메서드 이기 때문에, abstract 키워드를 메서드 앞에 붙일 필요가 없다.
•
자바에서 인터페이스 다중상속을 허용한 이유는?
◦
객체지향 프로그래밍에서 다형성은 굉장히 중요하다.
◦
자바에서는 다중상속이 막혀있어서, 자유로운 다형성 부여가 힘든 상황이다.
◦
그래서 자바는 인터페이스라는 제한된 형태의 클래스는 다중상속을 허용했다.
◦
인터페이스를 다중상속 해서, 모호함이 발생해도, 자식 클래스에서 해당 메서드를 오버라이드 해야하는게 필수 이기 때문에, 모호함이 존재할 수 없는 구조이다.