객체 지향 프로그램을 구현하는 법
- 객체를 정의하고
- 각 객체가 제공하는 기능을 구현하고
- 각 객체가 제공하는 기능들 간의 소통을 통하여 객체 간의 협력을 구현
- 하나의 클래스 파일 안에 여러 개의 클래스가 만들어질 수 있지만 public은 단 한 개만 붙어야 하고
public 클래스와 .java파일 명은 동일하다- 클래스는 대문자로 시작
- 낙타 표기법을 사용
- 용어 정리
객체 : 객체 지향 프로그램의 대상, 생성된 인스턴스
클래스 : 객체를 프로그래밍 하기위해 코드로 정의해 놓은 상태
인스턴스 : new 키워드를 사용하여 클래스를 메모리에 생성한 상태
멤버 변수 : 클래스의 속성, 특성
메서드 : 멤버 변수를 이용하여 클래스의 기능을 구현한 함수
참조 변수 : 메모리에 생성된 인스턴스를 가리키는 변수
참조 값 : 생성된 인스턴스의 메모리 주소 값
- private : 같은 클래스 내부에서만 접근 가능 (외부 클래스, 상속 관계의 클래스에서도 접근 불가
- 아무것도 없으면) : 같은 패키지 내부에서만 접근 가능 (상속 관계라도 패키지가 다르면 접근 불가
- protected : 같은 패키지나 상속 관계의 클래스에서 접근 가능하고 그 외부에서는 접근할 수 없음
- public : 클래스의 외부 어디서나 접근할 수 있음
다운캐스팅 과정
instanceof로 업캐스팅된 그 인스턴스가 원래 어떤 클래스인지 확인하고 (클래스명)인스턴스명 으로 다운캐스팅
- 하위 클래스에 구현된 메서드를 사용할 수 있다
인터페이스를 사용하는 이유
- 클래스나 프로그램이 제공하는 기능을 명시적으로 선언
일종의 클라이언트 코드와의 약속이며 클래스나 프로그램이 제공하는 명세- 클라이언트 프로그램은 인터페이스에 선언된 메서드 명세만 보고 이를 구현한 클래스를 사용할 수 있음
- 어떤 객체가 하나의 인터페이스 타입이라는 것은 그 인터페이스가 제공하는 모든 메서드를 구현했다는 의미
- 인터페이스를 구현한 다양한 객체를 사용함 - 다형성