1. 인터페이스 (Interface)
- 클래스가 객체의 설계도라면 인터페이스는 클래스의 설계도라 할 수 있다
- 멤버로는 추상메소드와 상수(final)만 구성된다
- 접근지정자는 public과 default만 가질 수 있다 (modifier(static, final)는 가질 수 없다)
- 인터페이스에 있는 추상 메소드는 public과 abstract란 키워드를 생략한다
ㄴ 자식의 오버라이딩 메소드에서는 반드시 public을 붙여야 한다
- 인터페이스의 변수 또한 public static final을 생략해도 컴파일러가 자동으로 붙여준다
public interface MyInterface{
int MONEY=100; // public static final이 생략됨, 자동으로 컴파일러가 붙여줌
void func(); // 추상메소드:public과 abstract를 생략해도 자동으로 붙는다.
}
- 클래스가 인터페이스를 상속 받을때는 implements란 키워드를 사용한다
class GeneralClass implements MyInterface {
// 인터페이스를 상속받으면 반드시
// 추상메소드를 오버라이딩 해야 한다.
public void func(){ }
}
- 인터페이스로인해 다중상속이 가능하다 ,(콤마) 사용
class Generclass extends Generalclass2 implements MyInterface, Myinterface2 {
//모든 추상 메소드 오버라이딩
}
- 인터페이스가 인터페이스를 상속받을 때는 extends 키워드 사용
interface MyInter3 extends MyInter1, MyInter2 {
void func();
}
- 인터페이스도 타입 선언은 할 수 있으나 new로 객체 생성은 할 수 없다
반드시 그 인터페이스를 상속받은 자식 클래스 객체로 생성해야 한다
2. 컬렉션 (Collection)
- Collection인터페이스로 부터 구현된 클래스
- 데이타를 효율적으로 사용하기 위한 하나의 자료구조
- 객체(클래스)만 저장 할 수 있다.
- get()메서드 혹은 Iterator,Enumeration인터페이스의 메서드릉 이용해서 객체를 꺼내 올 수 있다.
- 메모리 기반의 작은 데이타 베이스 역할을 한다 (입력, 삭제, 검색 등)
* collection인터페이스의 주요 메서드
- int size() : 컬렉션에 저장된 객체의 개수 리턴
- boolean isEmpty() : 객체가 비었으면 true,아니면 false반환
- boolean add(Object obj) : 객체 추가.성공시 true
- boolean remove(Object obj) : 객체 삭제.성공시 true
- boolean removeAll(Collection col) : 저장된 객체 전체 삭제
- boolean contains(Object obj) : 해당 객체가 있으면 true.
- Iterator iterator() : Iterator인터페이스 반환
* collection의 계층 구조
- Collection
ㄴ Set : 데이터 저장시 중복을 허용하지 않고 순서없이 입력된다.
ㄴ HashSet
ㄴ List : 데이터 중복을 허용하고 순서있게 저장된다. 배열형태로 저장된다
ㄴ ArrayList, Vector
ㄴ Map : 키와 값의 쌍으로 저장되고 인덱스가 아닌 키값으로 검색해서 검색 속도가 빠르다
ㄴ HashMap, HashTable
* Iterator 인터페이스와 Enumeration 인터페이스의 주요 메소드
- Iterator
ㄴ boolean hasNext() : 저장된 객체가 있으면 true
ㄴ E next() : 객체를 얻어 낸다.
ㄴ remove() : 객체 삭제
Iterator element = 컬렉션객체.iterator();
while(element.hasNext()) {
System.out.println(element.next());
}
- Enumeration
ㄴ boolean hasMoreElements() : 저장된 객체가 있으면 true
ㄴ E nextElement() : 객체를 얻어 낸다.
* 소스 예
- List 계열
// ArrayList<String> list = new ArrayList<String>();
Vector<String> list = new Vector<String>();
for(int i = 0;i< 10;i++) {
list.add("List"+i);
}
System.out.println("저장된 객체 수" + list.size());
System.out.println("Iterator 이용");
Iterator it = list.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
// 삭제
list.remove(1);
list.remove("List2");
System.out.println("for 이용");
for(int i=0;i<list.size();i++) {
System.out.println(list.get(i));
}
// Enumeration이용 - ArrayList에는 없음
System.out.println("Enumeration이용");
Enumeration e = list.elements();
while(e.hasMoreElements()) {
System.out.println(e.nextElement());
}
- Map 계열
Hashtable<String,Integer> list = new Hashtable<String,Integer>();
for(int i = 0;i< 10;i++) {
list.put("List" + i, i);
}
System.out.println("저장된 객체 수"+list.size());
System.out.println("Iterator 이용");
String key, value;
Set<String> st = list.keySet();
Iterator<String> it = st.iterator();
while(it.hasNext()) {
// 키값 얻기
key = it.next();
value = String.valueOf(list.get(key));
System.out.println("key값 : "+ key +" value값 : " + value);
}
// 삭제
list.remove("List2");
// Enumeration이용
System.out.println("Enumeration이용");
Enumeration e = list.keys();
while(e.hasMoreElements()) {
key = (String)e.nextElement();
value = String.valueOf(list.get(key));
System.out.println("key값 : " + key + " value값 : " + value);
}
'개발 > JAVA' 카테고리의 다른 글
19. JAVA 예외(Exception) / try~catch~finally (0) | 2020.06.08 |
---|---|
18. JAVA 클래스간 형변환 / 업캐스팅 / 다운캐스팅 / 내부클래스 (InnerClass) (0) | 2020.06.08 |
16. JAVA 배열 (Array) / 헤테로지니어스 (Heterogeneous, 이질화) (0) | 2020.06.08 |
15. JAVA 패키지 / 패키지 배포 (0) | 2020.06.08 |
14. JAVA 추상화 / 캡슐화 / 은닉화 / 생성자 / 싱글톤 (0) | 2020.06.08 |