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 연산자 (형변환 가능여부확인)