세 가지 상태만큼 자바의 특성에 대해 이야기

I. 서론

의 세 가지 특성 중 하나에서 연설이 멀티 상태는 , 인기 이해, 다양한 형태, 제스처의 다양한에 갈 수 있습니다.

그래서 객체 지향 프로그래밍에서, 다형성은 무엇을 의미?

"다형성"(다형성) "무엇"및 "방법"두 모듈의 분리를 달성하기 위해, 즉, 특정 구현 세부 사항이 다른 각도에서의 계면으로부터 분리된다. 다형성의 개념을 사용하여 코드와 조직의 가독성을 향상시킬 수있다. 또한, 그것은 또한 프로그램을 "확장이 용이"만들 수 있습니다. 프로젝트를 만들거나 새로운 기능을 추가 할 필요가있을 때, 그들은 쉽게 할 수의 과정에서 모두 "성장." --ThinkinJava

백과 사전 -Polymorphism 직접 NetEase는

둘째, 조건이 발생

  • 상속. 하위 클래스와 슈퍼 클래스 사이의 다형성이어야합니다.
  • 범위. 방법 서브 클래스 재정의 슈퍼 클래스
  • 서브 클래스에 상위 클래스의 변수 선언, 실제로 점을 입력합니다. 새로운 프로그램은 나중에 서브 클래스
 //f4变量是子类类型,指向子类实例
        Triangle f4 = new Triangle();

셋째, 다형 포함 (또는 반사) 두 측면 :

  1. 제 구체적인 방법을 달성하는 방법은에 다른 효과를 달성하기 위해, 동일한 방법으로, 상이한 수있다. 그것은이다 의 다형성 .
  吃苹果方法,可以剥皮吃,也可以不剥皮吃,甚至是榨苹果汁喝。

이 사양은 오버로드와 재정에 의해 달성 될 수있다 말하는

  • 오버 : 동일한 메소드의 이름과 다른 종류의 매개 변수의 수 때문 다른 효과를 얻을 수있다.
  • 무시 : 동일한 방법으로, 다른 서브 오브젝트의 예 및 달성 된 최종 결과가 동일 기능 아니다.
  1. 다형성 객체

    참조 형식 변환은 두 방향으로 괄호 연산자 캐스트에 의해 구현된다 : 상위 클래스 참조 타입을

    서브 클래스 타입 변수는이 변환 하향 전이 (내리 뜬)라고하며 서브 클래스 참조 형 변수에

    상위 클래스의 타입은,이 변환은 상향 전이 (업 캐스팅)이라고한다. 캐스트 요구 내리 뜬의가 캐스팅 자체입니다

    이동.

    • 위로 전환 : 부모 클래스의 서브 클래스 객체
    • 풀이 죽은 : 부모 개체는 하위 클래스가된다

넷째, 예

  • 다형성 간단한 예제 코드는 @Override 의사 표현을 재 작성 안에 있습니다. 일반적으로 당신은 IDE가 자동으로 목록에 추가됩니다 올바르게 다시 작성합니다. 이 인증 방법이다.
package music.daima.ebook;
class Figure{
    //绘制几何图形方法
    public void onDraw() {
        System.out.println("绘制Figure...");
    }
}
class Ellipse extends Figure{
    @Override
    public void onDraw() {
        System.out.println("绘制椭圆形");
    }
}
class Triangle extends Figure {
    // 绘制几何图形方法
    @Override
    public void onDraw() {
        System.out.println("绘制三角形...");
    } }
public class PolymorphismEasy {
    public static void main(String[] args) {
        // f1变量是父类类型,指向父类实例
        Figure f1 = new Figure();
        f1.onDraw();
        //f2变量是父类类型,指向子类实例,发生多态
        Figure f2 = new Triangle();
        f2.onDraw();
        //f3变量是父类类型,指向子类实例,发生多态
        Figure f3 = new Ellipse();
        f3.onDraw();
        //f4变量是子类类型,指向子类实例
        Triangle f4 = new Triangle( );
        f4.onDraw();
    }
}
//output:
绘制Figure...
绘制三角形...
绘制椭圆形
绘制三角形...
  • 당신은 개인 메서드를 재정의 할 수 없습니다
package music.daima.ebook;

public class PolymorphismFugai {
    private void p(){//if public...就可以覆盖
        System.out.println("1");
    }
    public static void main(String[] args) {
        PolymorphismFugai s = new jicheng();
        s.p();//将输出的是上面的1而不是我们想要的jicheng类中的方法
    }
}

class jicheng extends PolymorphismFugai{
    public void p(){
        System.out.println("2");
    }
}
//output:1
  • 정적 메소드 정적 다중 - 상태 관계
package music.daima.ebook;
//这一篇是用来研究静态方法与多态的
class A {
    public static String get(){//定义一个方法
        return "A is base";
    }
}
//继承A
class B extends A {
    public static String get(){//同样的方法
        return "B is not base";
    }
}
public class StaticUpcast {
    public static void main(String[] args) {
        A a = new B();//upcast 向上转型
        System.out.println(a.get());

    }

}
//output:
//A is base
//从这里发现静态方法是与类相关联的,不是与单个对象关联的,不能覆盖掉

읽어 주셔서 감사합니다

추천

출처www.linuxidc.com/Linux/2020-01/162015.htm