추상클래스 vs 인터페이스
- 추상클래스 : 상속을 통해 자손 클래스에서 완성하는 미완성 설계도
▶ Is-A ~ 이다.
- 인터페이스 : 기본 설계도 (다중 상속 가능)
▶ HAS -A ~을 할 수 있는~>
Exception

자바에서 에러(복구 불가 상황),예외(개발자의 실수) 관련된 클래스들의 계층구조는 위와 같다. Error는 말 그대로 에러와 관련된 클래스이다. 자바에서는 실행 시(runtime) 발생할 수 있는 프로그램 오류를 에러와 예외 두 가지로 구분한다.
Checked Exception vs UnChecked Exception

Static
- 고정된 의미 변수와 클래스에 사용 가능하며, 객체에 소속된 멤버가 아니라 클래스에 고정된 멤버이다. Static를 통해 생성된 정적멤버들은 Static영역에 할당되며,이는 모든 객체가 공유하며, 어디서든 참조가 가능하지만,Garbage Collector의 관리 영역 밖에 존재하기에 프로그램 종료시에도 메모리가 할당된 채로 존재하게 된다.
▶ 이는 시스템 성능에 악영향을 줌
Final
- 최종적 의미 초기값이 저장되면 최종적인 값이 되어 프로그램 실행 중에 수정 불가 final 필드의 초기값을 줄 수 있는 방법은 필드 선언시에 주는 방법, 생성자를 통해서 주는 방법 두 가지 있다.
Generic
- 일반적인 의미 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있도록 하는 방법
- Generic은 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것을 의미
제네릭 선언

타입매개변수-한 글자일 필요도, 설명과 일치해야 할 필요도 없다.

사용이유
public staitc void main(String[] args){
List<Integer> numbers = Arrays.asList(1,2,3,4,5,6);
int sum =0;
for(Integer number : numbers){
sum+=number;
}
}
public static void main(String[] args){
List numbers = Arrays.asList(1,2,3,4,5,6);
int sum=0;
for (Object number : numbers){
sum+= (int)number;
}
}
위 와 같이 형변환을 할 필요가 없으며 타입 안정성이 장점이다.