1. 생성자
- 클래스명과 같다.
- 반환하는 값이 없음.
- default 생성자 : JVM이 자동으로 생성
- 오버로딩 지원.
- this생성자 : 생성자의 첫번째 라인에서만 수행.(다른생성자의 것 불러오기)
- 생성자 내에서 다른 생성자는 호출 불가하므로 this를 쓴다.
- 인스턴스객체 생성시 멤버변수를 초기화하는 기능.
2. Static
- 공유
- 로딩시점 : 클래스를 한 번 읽을 때 (new보다 전에)
- 메모리 할당 : 클래스당 하나의 공간. (인스턴스 객체마다 메모리할당X)
- 사용상 차이
- 일반 메소드에서 static변수, static메소드 호출가능
- static에서는 일반 메소드, 멤버변수 호출 불가.
- class명.static메소드
3. 상속
- 재사용성과 확장성 : 부모의 것을 내것처럼 쓰는 것
- extends
- super : 부모 것 불러오기.
- 접근제한자 : public, protected만 자식이 접근 가능하다.
- 다형성 : 자식이 부모와 같은 메소드를 가지고 있지만 기능이 다른 것 [오버라이딩]
4. 접근제한자
- public
- protected – 상속인 경우 같은 클래스 접근가능.
- default
- private – 은닉성 캡슐화
- 접근 범위 :
public
> protected
> default
> private
5. 추상클래스
- 하나이상의 추상메소드를 가지고 있는 클래스
- 추상메소드 : 선언부만 있고 { } 기능이 없음.
- 인스턴스 생성 불가 : new(X)
- abstract 키워드 – 클래스와 메소드에만 가능 (멤버변수에는 X)
- 일반메소드와 추상메소드 모두 가질 수 있음
- 하위 클래스에서는 부모클래스 오버라이드 해야함
- 추상 클래스 객체변수 얻기
6. 객체의 형변환
- 정의 : 대입연산자를 기준으로 좌변 우변의 타입이 다른 경우 발생
- 조건 : 좌변 우변이 상속일때만 일어남.
- 종류 : 묵시적 / 명시적
- 묵시적 : 자식의 타입의 변수를 부모가 가짐
- 명시적 : 부모의 주소값을 자식이 갖게함. [강제적으로] -> 묵시적 형변환이 되어있어야함.
7. 인터페이스
- 상수와 추상메소드의 집합. 기능의 집합
- implements
- 인터페이스는 추상메소드만 있다보니 인스턴스 객체(new)불가.
- 인터페이스 메소드를 자식에서 반드시 오버라이드해야 인스턴스객체 생성가능
- public static final : 인터페이스 객체 변수 얻기.
8. final
- 변수, 메소드, 클래스에 붙일 수 있음.
- 변수 : 대입불가
- 메소드 : 오버라이드불가
- 클래스 : 상속불가.
9. 객체의 형변환
- 익명클래스?
- 클래스 선언 + 객체 생성
- 익명클래스의 형태
10. 예외처리
- 예상치 못하게 발생한 문제방지 (프로그램종료).
- 직접처리 : try, catch, finally
- try : 예외가 발생할수도 있는 부분.
- catch : 예외시 수행
- finally : 예외 발생하든말든 무조건 수행
- 간접처리 : throws
- 나를 부른 피호출자 메소드에서 예외를 처리하는 것.
- throw : 내가 예외 상황을 설정하고 싶을 때 ( 8글자 이상입력하면 에러메시지 띄우기)