클래스는 객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 함수(method)로 구성됩니다.
※필드 : 클래스에 포함된 변수를 의미합니다.
※함수 : 어떠한 기능을 갖고있는 명령문의 집합
JAVA는 기본 클래스를 가지고 있어서 클래스 선언 없이 사용할 수 있음.
객체 만들때는 클래스 항상 필요. 따로 선언 안했을 때는 기본클래스 사용하고 있는것임.
public : 모든 접근을 허용, 같은 프로젝트 내의 모든 객체들이 사용할 수 있도록 허용
private : 현재 클래스 내에서만 사용을 허가
protected : 상속관계의 객체들에게만 허가
default : 같은 패키지(폴더)내의 객체에만 사용을 허가
class Main {
public static void main(String[] args) {
//자동차 클래스 참조변수 a페라리 생성. 페라리 생성자로 페라리 객체 생성
자동차 a페라리= new 페라리();
//페라리 클래스 참조변수 b페라리에 a페라리가 참조하는 페라리 객체 참조
//페라리=>자동차는 자동 형변환 가능, 부모클래스 참조변수로
페라리 b페라리=(페라리)a페라리;
//a페라리 자동 형변환 불가. 수동 캐스팅해야 페라리 클래스 메소드 사용 가능.
((페라리) a페라리).뚜껑이_열리다();
b페라리.뚜껑이_열리다();
a페라리.서다();
}
}
class 자동차 {
void 달리다() {
System.out.println("자동차 달린다");
}
void 서다() {
System.out.println("끼이익!");
}
}
class 페라리 extends 자동차 {
void 뚜껑이_열리다() {
System.out.println("춥다 뚜껑 닫아..");
}
}
자손타입->조상타입(UP=casting) 은 형변환 생략 가능
조상타입->자손타입(Down-casting)은 형변환 생략 불가하다.