타입변환, 다형성
부모타입으로 가면 객체 생성 가능 !!
부모타입으로 갈 때 - 업캐스팅
자식타입으로 갈 때 - 다운캐스팅
부모는 자식꺼를 못 써서 자식꺼 쓸 거면 다운캐스팅
<추상클래스> - 형체가 없는 클래스, 구현되어 있지 않은 클래스, 상속 강제
스스로는 객체 생성 불가, 자식이 추상클래스의 메소드 구현 해줘야 함
추상메소드를 하나라도 갖고 있으면 추상 클래스
abstract 가 있으면 일반 클래스도 추상 클래스로 인식함
추상 메소드를 다 구현 한 자식 클래스로 객체를 생성한다
abstract method() <-추상메소드를 하나 이상 가지고 있으면
그 클래스는 abstract class로 선언 되어야 한다
abstract class는 직접 객체화 될 수 없다
abstract method는 구현부가 없음
자식들은 반드시 abstract method를 오버라이딩 해줘야 한다
만약 오버라이딩 하지 않으면
자식 클래스도 abstract가 되어야 한다 -> 객체 생성 불가
객체 생성을 하려면 오버라이딩 해야 한다
JDBC - IO => 예외처리
실행 전에는 닫혀있다가 연다
열자마자 여러가지가 대기하고 있으면 ~ 오류남
그래서 예외처리로 막아줌 -> 요건 나중엥~
<인터페이스> - 다중상속가능, JDBC, ~~~
이름만 정해진 메소드를 갖다 쓸 수 있게~캐스팅 가능
인터페이스에는 final static 상수로만!->근데 거의 선언 ㄴㄴ 메소드만 씀 거의
extends 대신 implements를 씀
모든 추상클래스 다 정의해야하고,
추상메소드 다 정의 안 하면 추상클래스로 들어간다
public static(final) 생략 가능해요
->어차피 무조건 붙는 거라서 !!!!
인터페이스 -> 계층구조형성 -> 다형성적용가능 -> 표준화
상위 인터페이스 타입 변수로 하위 객체 참조 가능
ㄴ 인터페이스를 배열로 해서 하위 객체들 배열 추가 가능
class 클래스이름 implements 인터페이스이름, 인터페이스이름 <--이런 식으로 다중 상속 가능
interface끼리 상속도 가능
inerface 인터페이스이름 extends 부모인터페이스이름
인터페이스->DB 에 많이 사용
내일은 예외, ArrayList, collection 를 배웁니당
----------------------------------------------------
예습
<컬렉션 프레임웍> - 데이터 군을 저장하는 클래스들을 표준화 한 설계
컬렉션과 다수의 데이터로 다루는 데 필요한 다양하고 풍부한 클래스들 제공
라이브러리 - 공통으로 사용될만한 유용한 기능 모듈화하여 제공 (그래픽, 통계...)
프레임웍 - 단순 기능뿐만 아니라, 프로그래밍 방식을 정형화하여 개발생산성up 유지보수 용이
<컬렉션 프레임웍의 핵심 인터페이스> - 3개의 타입 인터페이스
컬렉션 데이터 그룹 3가지 타입으로 나눠 3개의 인터페이스 정의
List와 Set의 공통 부분을 뽑아 Collection으로 추가 정의
(Map은 이 둘과는 전혀 다른 형태로 컬렉션을 다룸(공통범위 X) 그래서 Collection에 포함 X)
List - 순서O 중복O (대기자 명단)
ArrayList, LinkedList, Stack, Vector 등...
Set - 순서X 중복X (정수 집합, 소수 집합,,,)
HashSet, TreeSet
Map - 값(key)와 값(value)의 쌍으로 이루어짐 (우편번호, 전화번호..)
순서X 키 중복X 값 중복O
HashMap, TreeMap,....등
<Collection 인터페이스> - 주요메소드
add(), addAll() - 추가
remove(),removeAll() - 삭제
clear() - 전체삭제
size() - 객체개수
<List 인터페이스> - ArrayList, LinkedList 중복O 순서O
add(), addAll() - 추가
get(), set() - 읽기 쓰기
indexOf(), lastIndexOf() - 순차검색, 역방향 검색
remove() - 삭제
sort() 정렬
subList() - from~to 까지 반환
<Set 인터페이스> - HashSet, TreeSet
중복X 순서X 집합
<Map 인터페이스> - HashMap
key + value 쌍으로 저장
중복X 중복O 순서X
<ArrayList> - 가장 많이 사용! 배열리스트 Vector 개선!
저장순서O 중복O / Object 배열 이용해 순차 저장
0 1 2 3 4 ----> 순서대로
Collections.sort(list) 정렬
list1.containsAll(list2) list1이 list2의 모든 요소 포함? true
list.set(int index, Object o) index에 있는 객체 o로 변경
list1.retainAll(list2) list2와의 공통 요소 이외에는 제거(변화 있으면 true)
<ArrayList의 추가 삭제> - 중간위치 추가 삭제 오래걸림
1.삭제할 데이터 아래에 있는 데이터 한칸씩 위로 복사(데이터 덮어씀)
2. 데이터 모두 이동하면 마지막 데이터 null로 변경
3. size-- // 데이터 개수 줄었으니
<LinkedList> - 불연속적 데이터 서로 연결
배열 장점 : 간단, 사용쉬움, 데이터 읽는 시간 가장 빠름
배열 단점 : 크기변경X(새로운 배열 생성 후, 데이터 복사야해함)
ㄴ추가삭제 오래걸림 : 차례대로 추가 삭제는 빠른데, 중간에 추가 삭제하면 오래걸림
Linked리스트는 각 요소(node)들이 자신과 연결된 당음 요소에 대한 주소값,데이터 들로 구성되어있어서
중간에 추가하면 끼어들기, 삭제하면 요소 주소만 바꾸면 끝
<ArrayList와 LinkedList 비교>
ArrayList
-읽기 / 빠름
-추가삭제 / 느림
-순차적 추가 삭제는 빠르긴함, 비효율적 메모리 사용
LinkedList
-읽기 / 느림
- 추가삭제 / 빠름
- 데이터가 많으면 접근성 떨어짐
<Stack과 Queue> - Stack(LIFO) Queue(FIFO)
스택(클래스) - 순차적으로 데이터 추가 삭제, ArrayList같은 배열 기반 컬렉션에 좋음
큐(인터페이스) - 항상 첫번째 데이터를 삭제하니 LinkedList에 적합
<Stack과 Queue의 활용> - 408~410p
스택 - 수식계산, 수식괄호검사, 워드프로세서 undo/redo, 웹 뒤로/앞으로 가기
큐 - 최근사용문서, 인쇄대기목록, 버퍼
'국비 학원 가서 개발새발' 카테고리의 다른 글
국비학원 12일차) 예외, Set(HashSet,TreeSet) Iterator //예습:제네릭,IO와 스트림, (1) | 2022.10.14 |
---|---|
국비학원 11일차) ArrayList 예습)예외,컬렉션,HashSet,Map 등 (1) | 2022.10.13 |
예습)예외 처리(try-catch) (0) | 2022.10.10 |
Comparable 과 Comparator 차이(익명클래스 사용) (0) | 2022.10.10 |
예습) 프로그램 오류(에러와 예외) (0) | 2022.10.09 |