상속 시? 부모클래스로 자식클래스의 변수,메소드를 사용할 수 있나?? Nope 자식이 새로 정의한 메소드로 실행됨(부모의 메소드는 쉐도우 메소드로 됨)
인터페이스 Map의 활용? 여러 프로세스에서 key,value로 구성된 Map이 사용되고 있음.
컬렉션 프레임워크 주소번지 두 번 이상 접근해서 반환 받는 설정
Map
VO나 Map은 한 번에 한 개 로우만 담을 수 있음. 여러개 담으면 마지막 것만 기억함.
소셜로그인, 카카오 우편번호 검색, 카카오페이 구현 시 사용 가능
포스트맨 활용 (책검색으로 확인)
instanceof 예시
package collec.map;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import collec.list.CustomerVO;
class Map3{
Map<String, List<Map<String, CustomerVO>>> map = new HashMap<>();
public Map3() {
List<Map<String, CustomerVO>> list = new ArrayList<>();
Map<String, CustomerVO> imap = new HashMap<>();
CustomerVO cvo = new CustomerVO();
cvo.setC_id(12);
cvo.setC_name("토마토");
cvo.setC_birthday("2000-05-11");
imap.put("1", cvo);
list.add(imap);
map.put("outer", list);
}
}
public class MapMain3 {
public static void main(String[] args) {
Map3 m3 = new Map3();
System.out.println(m3.map.size());
System.out.println(m3.map.get("1")); //왜 null 일까?
System.out.println(m3.map.get("outer"));
//m3.map.get("outer")무슨 타입일까? List 타입임.
System.out.println(m3.map.get("outer") instanceof List); //true
System.out.println(m3.map.get("outer") instanceof Map); //false
//m3.map.get("outer").get(0)은 무슨 타입인가요? 맵() , VO는 주소번지
System.out.println(m3.map.get("outer").get(0) instanceof Map); //map
//VO타입이야?
System.out.println(m3.map.get("outer").get(0).get("1") instanceof CustomerVO); //VO
System.out.println(m3.map.get("outer").get(0).get("1").getC_id()); //VO
System.out.println(m3.map.get("outer").get(0).get("1").getC_name()); //VO
System.out.println(m3.map.get("outer").get(0).get("1").getC_birthday()); //VO
}
}
HashMap
HashTable → Vector와 비슷함. 스레드에 안전(하나씩 실행)
변수사용시 검색기능 지원하려면 개발자가 검색엔진을 구현해야함 → API로 제공됨(Map.containsKey(Object Key)
새글쓰기 - insert - 글 번호 없음 - 글 번호 새로 채번
댓글쓰기(응답, 요청) - insert - 기존 글(1건 조회-글번호 있음) 읽고 댓글 쓰기 버튼을 눌러서 내 생각을 붙이기
public int boardInsert(Map pmap){
int result = 0;
if(!pmap.contatinsKey("b_no")){ //너 새 글 쓰기야? b_no값이 있으면 댓글, 없으면 새글
}
else{ //댓글 쓸거야?
}
//insert 처리 메소드 한번에 호출하기
//새글, 댓글쓰기가 하나의 메소드 안에서 처리 가능
return result;
}
글수정하기/글삭제하기/공개여부
어떤 자료(수치, 문자열 등)를 읽고, 쓰기에 대한 추상화 인터페이스
List : 요소 순회 메소드 지원
Map : 요소 순회 메소드 지원
Set(UI 솔루션 지원x) : 요소 순회 메소드 지원 x, 순회를 담당하는 Iterator, enumeration 인터페이스를 추가로 사용해야 한다.
List,Map,Set 구조체 안에서 꺼내는 일에 대해 추상화 인터페이스
Iterator & Enumeration (Colletion요소를 순회) → for 판정
A is a B → 소나타는 자동차이다 (상속 관계 처리)
A has a B → 도형 안에 타원은 포함되어 있다. (내부클래스로 설계)
일반메소드도 선언하고 추상메도드도 선언 가능
인스턴스화는 할 수 없지만 생성자는 가질 수 있음.
인터페이스가 추상클래스보다 더 추상적이다(일반메소드를 못 갖기 때문)
public abstract class Car {
int speed;
String carName;
String carColor;
public Car() {}
public abstract void display(); //추상메소드
public void stop() {
speed = speed +1;
}
public void go() {
speed = speed -1;
}
}