참고사항
- 한 파일안에 여러개 클래스 들어올 수 있는가 —> 기본적으로는 파일 하나마다 클래스를 하나씩 작성!
기초지식
- import: 다른 패키지 안에 클래스 사용할 때 쓰는 명령어
- 다른 패키지 안 클래스를 이용하기 위해서는 앞에 패키지 이름을 붙여줘야함 --> import 통해 클래스 이름만 적으면 됨
java
- 자바의 객체 지향 특성
- interface
- 여러 객체들에게 하나의 컨벤션 제공
interface predator{
}
class lion extend animal implement predator
- 자바 컴파일 방식
- java program --> java compiler --> bytecode program --> jvm(자바 버추얼 머신) --> 기계어 변환 --> 실행
접근 제어자(클래스)
- default
- 클래스 생성 시 public을 생략하면 default임
- 다른 패키지에서 사용 불가
- public
- 다른 패키지에서도 사용 가능
- 하나의 자바 파일에 여러개의 클래스를 작성하는 경우 하나의 대표 클래스를 지정하는 용도도 있음
접근 제어자(멤버 선언 시)

- default
- 접근 제어자 지정 되어있지 않으면 자동적으로 default
- 같은 패키지 안에서 사용 가능
- public
- 다른 패키지에서도 사용 가능
- private
- 해당 클래스 외부에서 사용 불가(같은 패키지, 자식 클래스에서도 사용 불가)

- protected
- 해당 클래스 및 다른 클래스의 자식 클래스에서 사용 가능
- default + 다른 패키지 subclass 범위에서 사용 가능
캐스팅
- 업 캐스팅
- 원래 객체의 멤버 필드와 메서드는 접근 불가
Student student = new Student("도리도리");
Person person = student;
- 다운 캐스팅
- 명시적으로 타입 지정
// 업 캐스팅 선행
Person person = new Student();
// 그 후 다운 캐스팅 해줘야 함. and (Student) 처럼 명시적으로 타입 지정
Student student = (Student) person;
오버라이드
- 어노테이션: @override
- 어떤 메소드가 override 되었는지 명시
- 컴파일러 문법 체크 해줌