2013-03-10 1 views
0

왜 그것이 합법적 인 선언인지 알지만 왜 유용할까요? 바로가는이 다른 방법Java. 왜 이렇게하는 것이 유용합니까? Animal bear = new Bear();

:

Bear bear = new Bear(); //? 

내가 객체 동물 곰 = 새로운 곰()로 수행 할 수있는; 나는 후자와 할 수 없다? 설명에서

시도 :

이 같은 선언의 실천 diference의 새로운 기능 : 대

A. SuperClass x = new SubClass(); 

을, 당신은 당신이 할 수있는 객체로 수행 할 수있는

B. SubClass x = new SubClass(); 

B와 상관 없어? 왜 이런 목적을 선언하고 싶습니까?

감사합니다.

+0

여기에 묻고있는 것이 명확하지 않습니다 ... – Daedalus

+0

@ Daedalus, 설명을 추가하려고했습니다. – papercuts

답변

4

일반적으로 가능할 때마다 느슨한 결합이 바람직합니다. 부분적으로 이것은 코드가 사용하는 객체에 대해 가능한 한 적게 알아야한다는 것을 의미합니다. 코드에서 Animal이라는 사실을 알면 충분하다면 Bear임을 알리는 이유는 무엇입니까? 다음 주에 코드 Chicken을 사용하여 코드를 실행할 수 있습니다.

Animal에 노출 된 인터페이스에 자신을 제한하면 이제는 다른 특정 동물을 쉽게 놓을 수 있으며 Bear 특정 방법을 사용하지 않았다는 것을 알게됩니다.

-1

Bear bear = new Bear();의 주된 차이는 Bear 인 반면 Animal bear = new Bear();Animal의 개체로 정의됩니다. 이 방법은 새 베어를 동물로 정의하고 다른 베어는 새 베어를 베어로 정의합니다. 둘 다 실제적으로 같은 것이지만 특정 객체에 new Bear()이 필요한 경우 편도가 더 유용 할 수 있습니다.

+1

아니요, Animal bear = new Bear();에 객체는 여전히 'Bear'이지만 객체에 대한 * reference *는'Animal' 참조입니다. –

0

다형성을 달성하고 특정 동물이 아닌 모든 동물에 대한 일반 코드를 작성합니다.

그래서 동물 동물 = 새로운 곰()과 다른 다른 동물을 가리키는 데 사용할 수있는 동일한 참조를 사용할 수 있습니다.

관련 문제