다형성 객체 자바 -

다형성은 주로 두 가지 측면에서 객체 지향, 다중 상태 개체에서 매우 중요한 개념이다 :

  • 오버로드 된 메서드 재정의
  • 다형성 객체

다형성 객체는 두 가지 유형으로 구분된다 :

  • 업 캐스팅 : 서브 클래스 객체 - 부모 클래스 객체
  • 풀이 죽은 : 상위 개체 - 서브 클래스 객체

상승 전환, 자동으로 프로그램을 객체. 풀이 죽은 서브 클래스는 명시 적 전환의 유형을 지정해야합니다. 다음과 같은 형식은 다음과 같습니다
: 업 캐스팅 개체 父类 父类对象 = 子类实例;
개체 풀이 죽은 : 子类 子类对象 = (子类)父类实例;
케이스 객체를 업 캐스팅 한 다음
부모 클래스의 정의 :

public class Father {

    public void fun1(){
        System.out.println("father`s method fun1");
    }
    public void fun2(){
        System.out.println("father's method fun2");
    }
}

정의 서브 클래스

public class Son extends Father {

    @Override
    public void fun1() {
        System.out.println("son's method fun1 ");
    }
    public void fun3(){
        System.out.println("son's method fun3");
    }
}

테스트 상향 전이

    @Test
    public void test() {
        Son son = new Son();
        Father father = son;
        father.fun1();
    }

검사 결과:

fun1 아들의 방법
분석 :
아버지의 fun1 메서드 호출하지만, 실제로는 서브 클래스 fun1를 호출합니다. 즉, 전환 후 개체까지가 발생할 때, 메소드가 서브 클래스에 의해 오버라이드 (override)해야 호출합니다. 그러나 아버지는 클래스 호출 아들 fun3 방법에 정의되어 있지 않습니다. 당신이 조정 fun3 방법을 원하는 경우, 서브 클래스의 인스턴스를 호출 할 필요가 있습니다.

개체 풀이 죽은 :
또는 위의 테스트 케이스를 사용 :

    @Test
    public void test2() {
        Father father = new Son(); //向上转型
        Son son = (Son) father;  //向下转型
        son.fun1();
        son.fun2();
        son.fun3();
    }

결과:

아들의 방법 fun1의
Fun2에 아버지의 방법
아들의 방법 fun3

한가지 유의할 사항은 다음과 같습니다 변환해야 첫번째 내리 뜬 전에.

게시 22 개 원래 기사 · 원 찬양 9 ·은 30000 +를 볼

추천

출처blog.csdn.net/qq_19408473/article/details/71194358