자바 배열 형변환 질문

public class print {
public static void run(Tool[] tool) {
	if (tool[0] instanceof Hair) {
		Hair hair = (Hair) tool[0];
		System.out.println("=== Hair 클래스 ===");
		hair.write();
		hair.cut();
		hair.dry();
		hair.tint("Blue");
	} else if (tool[0] instanceof Paper) {
		Paper paper = (Paper) tool[0];
		System.out.println("=== Paper 클래스 ===");
		paper.write();
		paper.cut();
		paper.dry();
		paper.draw(null);
	}
}

public static void main(String[] args) {
	Tool[] tool = { new Hair("Hair", "wave"), new Paper("Paper", "A3") };
	run(tool);
}

}

저번에 비슷한 질문을 올렸었는데 답변을 받고 응용해서 배열을 형변환해서 코드를 짜보려는데요
결과값이
=== Hair 클래스 ===
type >> Hair
style >> wave
null(을)를 자르다
null(을)를 말리다
null를 Blue색으로 염색하다

이렇게 나오네요.

null값을 Hair로 출력되게 하고 싶고, Paper 클래스도 출력되게 하고 싶은데 어느 부분을 수정해야할 지 잘 모르겠습니다.

privateprotected 의 차이점에 대해 찾아보세요.

protected를 안 쓰고 만들고 싶어서요

형변환을 지양하세요.

다형성은 부모자리에 자식이 들어가도 같은성질을 유지하는것을 의미하는 개념입니다.

객체지향적 관점에서 봤을때 형변환을 하는건 설계가 문제있는것이죠.

2 Likes

아 그렇군요. 다형성이랑 형변환이 연계되는 줄 잘못 알고 있었네요 감사합니다
혹시 그럼 저기서 null값이 뜨는 건 왜인건지 알 수 있을까요?

null이 뜨는 이유는 type안에 아무것도 안들어있어서 그런것이쥬
Hair 클래스의 type 변수에 아무것도 입력하지 않았잖아용

아 해결했습니다 감사합니다

네 상속에 대해서 변수가 어떻게 되는지는 대충 감을 잡으신거 같으니까요.
이 코드를 보시고 상속과 다형성을 활용하는 방법에 대해 한번 공부해보세요.

오 감사합니다