English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Java에서 다중 상태성의 구현
다중 상태는 무엇인가요
다중 상태가 존재하는 세 가지 필수 조건은 다음과 같습니다. 꿈을 꾸는 동안도 기억할 수 있도록 요청드립니다!
다중 상태가 존재하는 세 가지 필수 조건
1. 상속이 필요합니다;
2. 재정의가 필요합니다;
3. 부모 클래스 참조가 서브 클래스 객체를 가리킵니다.
다중 상태의 장점:
1. 대체성(substitutability)。다중 상태는 기존 코드에 대체성을 가지고 있습니다. 예를 들어, 다중 상태는 원 Circle 클래스에 작동하며, 원형의 다른 모든 기하학적 객체, 예를 들어 원环도 마찬가지로 작동합니다.
2. 확장성(extensibility)。다중 상태는 코드에 확장성을 가지고 있습니다. 새로운 서브 클래스를 추가하면 기존 클래스의 다중 상태, 상속성, 그리고 다른 특성의 실행 및 작업에 영향을 미치지 않습니다. 실제로 새로운 서브 클래스는 다중 상태 기능을 더 쉽게 얻을 수 있습니다. 예를 들어, 콘vek, 반콘vek 및 반구체의 다중 상태 기반에서 구체 클래스의 다중 상태를 쉽게 추가할 수 있습니다.
3. 인터페이스성(interface-ability)。다중 상태는 super 클래스가 메서드 서명을 통해 서브 클래스에 공통 인터페이스를 제공하고, 서브 클래스가 그것을 완성하거나 덮어쓰면서 구현됩니다. 그림에서 보면8.3 이렇게 표시되었습니다. 그림에서 super 클래스 Shape는 다중 상태를 구현하기 위해 두 개의 인터페이스 메서드를 정의했습니다. computeArea() 및 computeVolume(). Circle 및 Sphere와 같은 서브 클래스는 다중 상태를 구현하기 위해 이 두 개의 인터페이스 메서드를 완성하거나 덮어씁니다.
4. 유연성(flexibility)。그것은 응용 프로그램에서 다양한 작업을 반영하며, 사용 효율성을 높입니다.
5. 간소화성(simplicity)。다중 상태는 응용 소프트웨어의 코드 작성 및 수정 과정을 간소화하고, 특히 많은 객체의 계산 및 작업을 처리할 때 이 특징이 특히 돋보이고 중요합니다.
Java에서 다중 상태의 구현 방법: 인터페이스 구현, 부모 클래스를 상속하여 메서드 재정의, 동일한 클래스 내에서 메서드 오버로드.
一个小题目:
(一)相关类
class A ...{ public String show(D obj)...{ return ("A and D"); } public String show(A obj)...{ return ("A and A"); } } class B extends A...{ public String show(B obj)...{ return ("B and B"); } public String show(A obj)...{ return ("B and A"); } } class C extends B...{} class D extends B...{}
(이)문제: 다음 출력 결과는 무엇인가요?
A a1 = new A(); A a2 = new B(); B b = new B(); C c = new C(); D d = new D(); System.out.println(a1.show(b)); ① System.out.println(a1.show(c)); ② System.out.println(a1.show(d)); ③ System.out.println(a2.show(b)); ④ System.out.println(a2.show(c)); ⑤ System.out.println(a2.show(d)); ⑥ System.out.println(b.show(b)); ⑦ System.out.println(b.show(c)); ⑧ System.out.println(b.show(d)); ⑨
(三)답변
① A and A ② A and A ③ A and D ④ B and A ⑤ B and A ⑥ A and D ⑦ B and B ⑧ B and B ⑨ A and D
읽어주셔서 감사합니다. 많은 도움이 되길 바랍니다. 많은 분들께서 이 사이트에 대한 지원에 감사합니다!