(내 의견으로는) 주조가 필요하지 않은 경우에는하지 마십시오. 코드가 읽기 쉽습니다. 특히
, 구문 :
d.go(d);
내가 내 첫 번째 시도에서 아래에 설명하는 이유 확대를 활용,보다 간결하고, 기본적으로
d.go((Animal)d);
만큼 정확 당신의 질문에 대답하십시오.
글쎄, 그것은 코드가 성취하고자하는 바에 달려 있습니다. 당신이 동물, 개 또는 다른 어떤 종류를 처리 할 수있는 기능을 원하는 경우
는, 당신은 입력으로 동물을해야한다.
는 만 개 가지고, 또는 만 입력으로 개를 취하는 작업으로 의미가 무엇인가를 필요로하는 기능을 원하는 경우에, 당신은 입력 개가으로해야한다.
편집 : 아마도 좀 더 인위적인 예가 이것이 직설적 인 답을 가진 질문이 아닌 이유를 설명 할 것입니다. Java에서 모든 객체는 Object의 하위 객체이므로 매개 변수 Object foo
을 사용하는 모든 메소드를 작성할 수 있습니다.
때때로이 유용 할 수 있지만, 그 사용의 경우는 정말 매우 제한적입니다, 당신은
Object
에 정의 된 방법으로 제한하고 있습니다.
는 또한
Object
인에 대한
Dog
을 알고 대신 가정하자. 오히려
Object
로
Dog
의 인스턴스를 전달하는 대신 당신은
Dog
에
특정 몇 가지 속성을 가져올 수도 있습니다. 기본적으로 어떤 함수에 대한 인수가 일부 계약에 부합하는지 확인해야하는 경우 인수를 약간 다르게 형식을 따르는 형식으로 제한해야합니다 : 개가 도그라는 것을 알고 싶다면으로 선언하십시오. 일반적으로 , 당신이해야한다 (제 생각에) 당신이 성취해야 할 어떤 계약을 따르는 "넓은"유형을 선택합니다. 동물이 동물임을 알 필요가 있다면 동물이라고 선언해야합니다.
그리고 질문은? –