on
패스트캠퍼스 챌린지 19일차
패스트캠퍼스 챌린지 19일차
static: 객체를 생성하지 않고 사용할 수 있는 필드, 메소드
static 메소드나 블록 내부에 인스턴스 필드, 인스턴스 메소드 사용 불가
this (객체 자신의 참조) 키워드도 사용 불가
static final : 상수
[상속]
자식 클래스 호출시 부모 클래스가 먼저 형성
자식 생성자의 맨 첫 줄에서 형성
부모 클래스에 기본 생성자가 없다면 자식 생성자에서 반드시 명시해야 함
Override: 부모 메소드보다 더 높은 단계의 접근제한자를 걸 수 없다 (더 낮은 단계는 됨)
Override 어노테이션은 생략이 가능하다
* Source Override/Implement methods
오버라이딩한 이후에도 super.부모메소드(); 사용하여 부모메소드 호출 가능
다형성 : 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질
(ex) Tire t1 = new HankookTire();
자식타입은 부모타입으로 '자동 형변환'이 가능
(ex) Cat cat=new Cat();
Animal a=cat;
자동형변환된 이후에는 객체는 자식객체를 참조해도 부모 클래스에 선언된 필드와 메소드만 접근이 가능, 하지만 Override된 경우에는 자식클래스의 해당 Override된 메소드가 호출됨 -> 왜 이런건지 한번쯤 생각해보렴
Animal a= new Cat();
동물타입인 a변수, 객체는 Cat
선언된 타입 클래스에 존재하는 메소드만 쓸 수 있고, 필드값도 같은 이름으로 재정의해도 타입클래스에 정의한 값으로 나오는데 오버라이딩된 메소드는 메소드 내에서 사용하는 필드값도 객체클래스것으로 나옴... 참조구조가 대체 어떻게 되어있는걸까?
부모를 자식 타입으로 강제 형변환 -> 자식으로 선언된것이 부모로 형변환된 경우에만 가능
boolean a instanceof b
인터페이스 선언
[자료구조]
key: 유일한 자료값
<비선형 자료구조: 앞과 뒤의 요소가 1:n으로 배치되어있는 자료구조>
트리:
트리의 자식노드 수를 '디그리(차수)'라고 함.
레벨: '단'의 갯수
이진트리 (디그리<= 2)를 가장 많이 사용
Complete binary tree 이진트리의 레프트 노드부터 채워지는 형태
heap: Max heap/Min heap (중복가능)
heap sort
priority queue
Fully complete binary tree 두개씩 다 달린것
binary search tree 중복불가
parent를 중심으로 left는 자기보다 작은값, right는 자기보다 큰 값을 가짐
avl트리, 레드블랙트리 (밸런스를 맞춰준다)
log2n는 평균값, skewed tree가 부적절한 이유
트리/그래프를 쭉 도는것 traversal
preorder inorder postorder
inorder traversal를 하면 binary search tree는 sorting이 된다 -> 순서대로 다 정렬됨
* Collection Framework의 Treeset, TreeMap이 binary search tree로 구현되어 있음
그래프: 구글맵 등
vertex(edge)
edge
인접행렬/인접리스트
BFS/DFS
해싱: JDK내에 라이브러리 존재 / Dictionary
Key/value pair로
index는 순서와는 무관하기 때문에 내가 넣은 순서와 무관하게 데이터가 출력됨
키는 유일, value는 중복될수도
hashfunction을 어떤식으로 만드느냐에 따라 분포도가 달라짐
collition관리: hashtable/chaining
- hashtable (2차원배열)
슬롯에 나란히 들어있는 애들을 synonym이라고 함
버켓(row)이 크고 슬롯(column)이 크면 오버헤드 발생
-chaining
linkedlist 활용
https://bit.ly/37BpXiC
※ 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
from http://hardblackpencil.tistory.com/54 by ccl(A) rewrite - 2021-09-25 00:00:55