자바 추상 클래스와 다형성

추상적 인 개념

  동일한 방법으로 기능을 선언하지만, 신체 기능의 서로 다른 방법. 그런 다음 시간이 추출 만 추출 방법 문이 아닌 대상 추출 방법 할 수있다. 이 메소드는 추상적 인 방법이다.

추상 클래스 정의 형식 

  A : 추상 메소드 정의 된 형식을 :

      A : 공공 추상 메소드의 리턴 타입 이름 (매개 변수);

  추상 클래스는 형식을 정의합니다 :

    추상 클래스 类의 名 {

    }

  예 :

1  // 추상 클래스 방법은 추상적 선언해야 
2 개  공용  추상  클래스 에서 Test1 {
 . 3   
. 4 개      // 추상 방법 "{}"가없는 
5.      공용  추상  공극 F ()
 . 6     

  추상 클래스 이외에 추상 메소드를 포함 할 수 있지만 또한 특정 변수 및 구체적인 방법을 포함한다. 추상 메소드하지 않고 클래스를 포함하는 추상 클래스로 선언 할 수있다, 그것을 방지 인스턴스화됩니다.

  추상 클래스는 추상 메소드는 서브 클래스에서 구현해야하는 추상 클래스를 얻기 위해 새 키워드의 인스턴스를 사용하지 즉, 인스턴스화 할 수 없습니다.

  추상 응용 프로그램 :

1  // 추상 클래스 방법은 추상적 선언해야 
2 개  공용  클래스 Demo01 {
 3.   
4.      공용  정적  무효 메인 (문자열 []에 args) {
 5.          교사 교사 = 새로운 새 교사 ( "선생님" )
 . 6          teacher.work ()를 ]
 . 7          
. 8          드라이버 = 드라이버 새로운 새로운 드라이버 ( "드라이버" )
 . 9          driver.work ();
 10      }
 . 11      
(12)이다  }
 13 인  // 추상 클래스를 
14  추상  클래스 사람 {
 15      // 추상 방법
(16)      공공  추상적  무효 일 ();
17  }
 18   교사는 확장 사람들 {
 19      개인 문자열 작업을;
20      공용 교사 (문자열 일) {
 21           보고 있다고! 날보고 말해 = 일;
22      }
 23      @Override
 24      공용  무효 일 () {
 25          에서 System.out.println ( "我的职业是"+ 보고 있다고! 날보고 말해);
26      }
 27      
28  }
 29  클래스 드라이버 확장 사람들을 {
30      개인 문자열 작업;
(31)      공공 드라이버 (문자열 작업) {
 (32)           보고 있다고! 날보고 말해 = 일;
33      }
 34      @Override
 35      공용  무효 일 () {
 36          에서 System.out.println ( "我的职业是"+ 보고 있다고! 날보고 말해);
37      }
 38 }

다형성

  정의

    다형성은 여러 가지 다른 형태 또는 같은 행동의 표현을 할 수있는 능력이다. 다형성은 상이한 동작 사용할 수행하는 다른 인터페이스의 동일한 인스턴스들의 능력이다

    최종 상태는 부모 클래스를 가리 할 수있는 여러 참조 변수 개체를 하위 클래스 반영한다. 다형성은 자식 부모 관계 또는 관계 클래스가 있어야 전제가 인터페이스를 구현하거나 다형성을 완료 할 수 없습니다입니다.

    다형성 메서드 호출 상위 클래스 참조 변수는 하위 클래스 재정의 후 메소드를 호출합니다.

  형식 : 부모 클래스 참조 변수 서브 클래스 객체 점은

    부모 클래스 타입 변수 이름 = 새 서브 타입 ();

    변수 이름 메소드 이름 ();

  다형성 기능 회원

    1. 다형성 멤버 변수는 : 컴파일 및 실행을 왼쪽으로 봐         

      F = 푸 새로운 닫아 ();

      에서 System.out.println (f.num) // F 값은 푸 상위의 값으로 만 접근 할 수 있는지

    2. 다중 상태 멤버 메소드 : 봐 왼쪽을 컴파일이 실행 오른쪽으로 보면

       푸 F1 = 새로운 닫아 ();

            에서 System.out.println는 (f1.show는 ()); // F1 외관 푸 유형이지만, 실제의 형태가 닫아이므로 메소드 호출은 재기록된다.

  instanceof를 키워드

    작업 : 객체 데이터 타입에 속하는 경우를 결정한다.

    참고 : 반환 형식이 부울입니다

    예 :

. (1)   푸 F1 = 새로운 새 닫아 (),
 2-          푸 F2 = 새로운 새로운 인자 ()
 . (3)          IF (F1 instanceof를 닫아) {
 . 4              에서 System.out.println는 ( "닫아은 타입 F1은" )
 . 5          }
 6.          다른 {
 7.              시스템. out.println ( "F1은 아들 타입이" ),
 8 }

  다형성 전환   

    두 가지의 상승 천이 및 하강 천이에 다형성 전이
      상향 전이 : 프로세스 자체 다형 변형은 상방으로 인

        형식을 사용 : 부모 클래스 타입 변수 이름 = 새로운 서브 클래스 유형을 ();

        응용 프로그램 시나리오 : 언제 어떤 얼굴 서브 클래스 유형, 확장 성을 증가 또는 해당 작업을 완료하기 위해 부모 클래스의 기능을 사용하여.

      다운 캐스트 : 전이는 상향 서브 오브젝트 포맷을 사용할 수있다 캐스트 갖는 여러 유형의 서브 기준으로 상위 클래스 참조의 형식

        형식을 사용하여 : 변수 이름 = 서브 타입 (서브 타입) 변수의 상위 클래스 타입;

        해당 장면 : 서브 클래스 고유의 기능을 사용하고자 할 경우.

 

추천

출처www.cnblogs.com/zhai113/p/11569907.html