- 데이터 중에는 몇 가지로 한정된 값만을 갖는 경우가 있는데 이런 데이터 타입을 열거타입이라 함
- 매개변수를 달리하는 생성자를 여러 개 선언하는 것을 말함 this()로 다른 생성자 호출 가능
- 같은 이름의 메소드를 여러개 선언, 매개변수의 타입, 개수, 순서 중 하나가 달라야 함
- 객체(인스턴스)를 생성한 후 사용할 수 있는 필드와 메소드를 말함
- 인스턴스 필드, 메소드 등이 있음
- 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말함(클래스멤버라고도 함)
- 가끔 전체 프로그램에서 단 하나의 객체만 만들도록 보장해야 하는 경우가 있다.
- 단 하나만 생성된다고 해서 이 객체를 싱글톤이라고 한다.
- 싱글톤을 만들려면 클래스 외부에서 new연산자를 사용 못하게 해야함
- 그래서 접근제한자 private를 사용함
- 한번 초기값이 저장되면 런타임 중에는 변경할 수 없음 관례적으로 static을 붙여 상수를 만들도록함.
- 객체 지향 프로그래밍에서 객체의 데이터는 객체 외부에서 직접적으로 접근하는 것을 막는다.
- 그 이유는 객체의 무결성이 깨지기 때문인데 이 문제를 해결하기 위해 메소드를 통해서 데이터를 변경 하는 방법을 선호한다.
- 데이터는 외부에서 접근할 수 없도록 막고 메소들는 공개해서 외부에서 메소드를 통해 데이터에 접근하도록 유도한다.
- 그 이유는 메소드는 매개값을 검증해서 유효한 값만 데이터로 저장할 수 있기 때문이다.
- 이런 역할을 하는 메소드가 Setter이다. 데이터를 읽을 땐 메소드로 필드값을 가공한 후 외부로 전달하면 되는데 이 메소드가 Getter이다.
- @Override의 경우 메소드가 재정의 되었음을 컴파일러에게 알려주고 문법 체크하라고 전달한다.
- 추상화
- 캡슐화
- 상속성
- 다형성
- 단일 책임의 원칙 (Single Responsibility Principle)
- 개방 폐쇄의 원칙 (Open Close Principle)
- 리스코프 치환 원칙 (The Liskov Substitution Principle)
- 인터페이스 분리 원칙 (Interface Segregation Principle)
- 의존 역전 원칙 (Dependency Inversion Principle)
- 부모의 메소드를 가져옴
- 부모타입을 자식 타입으로 변환하는 것을 말한다.
- 자식 타입이 부모타입으로 자동 변환한 후, 다시 자식 타입으로 변환할 때 강제 타입 변환을 사용할 수 있다.
- 부모 변수가 참조하는 객체가 부모 객체인지 자식 객체인지 확인 가능
- abstract을 클래스에 붙여서 사용가능
- 실체 클래스들의 공통된 필드와 메소드의 이름을 통일할 목적으로 사용하고 실체 클래스를 작성할 때 시간을 절약할 수 있기 때문에 사용 가능하다.
- @Overrid를 통해 추상 메소드 재정의를 통해 실체 메소드 구현
- 객체의 사용 방법을 정의한 타입이다.
- 객체의 교환성을 높여주기 떄문에 다형성을 구현하는 매우 중요한 역할을 한다. 개발 코드와 객체가 서로 통신하는 접점 역할을 한다.
- 상수 필드: 상수를 선언할 때에는 반드시 초기값을 대입해야 한다.
- 추상 메소드: 객체가 가지고 있는 메소드를 설명한 것으로 호출할 때 어떤 매개값이 필요하고, 리턴 타입이 무엇인지만 알려준다.
- 디폴트 메소드: 인터페이스에 선언되지만 사실은 객체가 가지고 있는 인스턴스 메소드이다.
- 정적 메소드: 디폴트 메소드와는 달리 객체가 없어도 인터페이스만으로 호출이 가능하다.
- 예외는 두 종류가 있다. 일반 에외, 실행 예외이다.
- 일반 예외는 컴파일러 체크 예외라고도 한다. 하지만 둘다 예외 처리가 필요하다.