interface fruit{
public void say();
}
class apple implements fruit{
public void say(){
System.out.println("eat apple");
}
}
public class Just4Fun {
public static void main(String[] args) {
fruit anApple = null ;
//****************************************************
anApple = new apple() ; //向上转型
//****************************************************
anApple.say();
}
}
说下我的思路吧:
以这个例子做说明,实例化apple之后将其赋值给anApple,而anApple类型为fruit,空指向,在第二步阶段完成向上转型操作。但这里,我想问的是为什么经常会先把实例化的对象进行向上转型操作呢?这样做的有什么意义?
求帮忙分析下我的【思路】以及这么做的【意义】,困惑很久了已经::>_<::
先谢谢啦~
Java Collection Framework를 살펴보는 것이 좋습니다
사실 주제의 아이디어에 따르면 여기서는
를 직접 사용할 수 있습니다. 하지만 우리는 인터페이스 지향 프로그래밍을 옹호하기 때문에 상대적으로 좋은 프로그래밍 습관을 길러왔습니다new Apple ()
가 필요하지 않으며 이 인스턴스 객체를Fruit
참조에 직접 할당할 수 있습니다. >, 하지만 언젠가 필요할 경우를 대비해
Apple apple = new Apple();apple.say();
(가능성은 매우 적지만 거의 그렇지 않습니다)실제로
new Banana()
를으로 변경하면 됩니다. 좋습니다. 아래에서 Apple 자체 메서드(인터페이스
Fruit fruit = new Apple()
메서드 아님)Fruit fruit = new Banana()
를 호출하든 상관하지 않으셔도 됩니다.Fruit
인터페이스 지향 프로그래밍의 가장 큰 이점은 호출자가 특정 구현에 신경 쓸 필요가 없다는 것입니다. 물론, 제목 예시처럼 이 방법에서도 실제로Apple apple = new Apple()
질문자의 예시가 별로 좋지 않을 수도 있으니 다른 예시를 시도해 보세요다음 예시가 더 직관적일지는 모르겠습니다
귀하의 코드를 보면 정말 머리가 아프네요. 코드가 몇 개 안 되지만 코드 사양이 너무 형편없어요.
문제 해결 방법:
Up이 딱 맞습니다. (이건 말도 안되는 소리입니다.)
간단한 예를 들어보세요.
생산자는 동물을 생산하는데, 토끼나 다른 동물도 소비자는 생산자가 무엇을 생산하는지 모릅니다. 그래서 그들은 소비자 측에서 집합적으로 동물이라고 불립니다.
이제 이해되셨죠?
소스코드를 보시면서 더 읽어보시면 이해가 되실 겁니다
이것은 Java의 세 가지 주요 기능 중 다형성의 구현입니다. 우리는 항상 프로그래밍에서 인터페이스 지향 프로그래밍을 옹호해 왔습니다. 표준이라고 하기보다는 표준이라고 말하는 것이 더 정확합니다. 코드를 작성할 때는 비즈니스 중심으로 작성해야 합니다. 코드를 확인할 때 비즈니스가 변경되면 코드에 어떤 문제가 생길지, 변경이 가능한지 등도 생각해야 합니다.
자바 아이디어와 디자인 패턴을 살펴보는 것을 추천합니다
책이나 온라인에서 다형성과 인터페이스에 대한 설명과 응용을 읽어보면 이 디자인이 정말 영리하다는 것을 알게 될 것입니다!
꼭 이런 식으로 쓰려는 것은 아닙니다. 단지 다형성을 사용하면 더 유연해질 것이라는 뜻입니다.
사실 저는 아직도 대부분의 개발 방법을 작성하고 있습니다. 그게 다야