Java
Java - 객체지향 규칙(암기)
장진혁
2023. 1. 27. 15:10
1. 클래스를 만들때 기본생성자 작성 필수
- (Object 클래스를 제외한 모든 클래스의 생성자 첫 줄에 생성자, this(), super() 호출)
2. 참조형 변수(Reference Variable)란?
- 기본형 매개변수 - 변수의 값을 읽기만 할 수 있다.
- 참조형 매개변수 - 변수의 값을 읽고 변경할 수 있다.
기본형 변수는 값을 저장하는 저장공간이다.
기본형 변수에 저장되는 값은 리터럴, 즉, 실제 값이 저장된다. 10, A, true 등 있는 그대로의 값을 저장
하지만 참조형 변수는 다르다.
맨 처음에도 한 번 언급한 적이 있지만 참조형 변수는 실제 값이 아닌 주소 값을 저장한다.
3. 조상 자손 관계의 참조변수는 서로 형변환 가능
- 조상타입의 참조변수로 자손타입의 인스턴스를 참조할 수 있다.
- 반대로 자손타입의 참조변수로 조상타입의 인스턴스를 참조할 수는 없다.
자손타입 -> 조상타입 (Up casting) : 형변환 생략가능
자손타입 <- 조상타입 (Down casting) : 형변환 생략불가
생략을 고민하면서 할 필요없음 그냥 형변환 써주면됨 생략해야 하나 고민 필요 X
class CastingTest1 {
public static void main(String args[]) {
Car car = null;
FireEngine fe = new FireEngine();
FireEngine fe2 = null;
fe.water();
car = fe; // car =(Car)fe;에서 형변환이 생략된 형태다.
// car.water();
fe2 = (FireEngine)car; // 자손타입 ← 조상타입
fe2.water();
}
}
class Car {
String color;
int door;
void drive() { // 운전하는 기능
System.out.println("drive, Brrrr~");
}
void stop() { // 멈추는 기능
System.out.println("stop!!!");
}
}
class FireEngine extends Car { // 소방차
void water() { // 물을 뿌리는 기능
System.out.println("water!!!");
}
}
4. 다형성
StartTv st = new SmartTv(); 처럼 인스턴스 타입과 일치하는 참조변수만이 아니라
Tv t = new SmartTv(); 처럼 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 함.
- 참조변수의 형변황 - 리모컨 바꾸기 (사용가능한 멤버갯수조절)
- instanceof 연산자 (형변환 가능여부확인)