11. 객체에 대한 3가지 특징(캡슐화, 상속, 멀티태스) - 멀티태스킹

4381 단어 Java 기반

다태

  • 대상을 대상으로 하는 가장 중요한 특징은 포장과 계승이 다태적인 기초
  • 이다.
  • 필요조건: 1. 상속관계를 만족시키기;2. 부류 인용은 부류 대상을 가리킨다.
  • 멀티태스킹은 서로 다른 대상이 같은 메시지에 서로 다른 응답을 할 수 있음을 의미한다
  • 분류: 1. 컴파일할 때 멀티태스킹(디자인할 때 멀티태스라고도 부른다. 예를 들어 방법 재부팅) 2. 실행할 때 멀티태스킹(프로그램이 실행될 때 어떤 방법을 호출할지 결정한다)
  • 향상된 전환


    상향 전환의 개념-상향 전환은 자동 전환, 은식 전환이라고도 부른다.상향 전환은 부류 인용이 부류를 가리키는 실례, 즉 부류의 대상이 부류에 값을 부여할 수 있는 대상이다.예: Animal dog=new Dog();//Dog 클래스는 Animal 클래스의 하위 클래스입니다. - 위로 전환하는 것은 안전합니다. - 모든 하위 클래스가 상위 클래스의 방법을 계승하고 받아들였기 때문입니다.예에서 알 수 있듯이 모든 강아지는 개의 부류인 동물에 속한다. 이것은 가능하다. - 아래로 전환하면 안 된다. - 모든 동물이 강아지라면 성립되지 않는다.(따라서 하향 전환은 강제 유형 전환을 통해 해야 하며, 후속 장에서 설명할 것이다)
    응용 프로그램
  • 하위 클래스의 대상이 상위 클래스로 전환되면 상위 클래스의 대상으로 간주되고 호출할 수 있는 방법은 줄어들며 하위 클래스가 상위 클래스를 다시 쓰는 방법과 상위 파생 방법(예를 들어 set(), get() 방법)만 호출할 수 있고 하위 클래스만의 방법은 호출할 수 없다.
  • 부류 중의 정적 방법은 이불류를 다시 쓰는 것을 허용하지 않는다.
  • 하위 클래스 Pencil에서도 같은 이름의 방법을 정의할 때 draw()는 Pencil 클래스 자신만의 방법
  • 을 계산한다.
  • 위로 전환할 때 만들어진 부류 대상이 이런 방법을 호출할 때 부류 자체의 정적 방법이 아니라 부류 자체의 정적 방법을 호출한다.


  • 바인딩
  • 다태적 실현은 상향 전환과 동적 귀속 메커니즘을 통해 완성할 수 있다. 상향 전환은 하위 클래스 대상을 상위 클래스 유형으로 전환시키는 것을 실현했다. 반면에 동적 귀속 메커니즘은 대상 전환 전의 유형을 식별하여 이 클래스를 자동으로 호출하는 방법을 실현할 수 있고 둘은 서로 보완된다.
  • 귀속은 한 방법을 같은 방법이 있는 클래스로 연결하는 것이다.귀속은 정적 귀속과 동적 귀속 두 종류로 나뉜다.

  • 1. 동적 바인딩 동적 바인딩: 프로그램이 실행되는 동안 JVM이 대상의 유형에 따라 어떤 방법을 사용해야 하는지 자동으로 판단하는 것을 후기 바인딩이라고 한다.2. 정적 귀속 정적 귀속: 프로그램이 실행되기 전에 귀속(컴파일러와 링크 프로그램이 완성한 것)을 하는 것을 전기 귀속이라고도 한다.

    아래로 변환(강제 유형 변환)

  • 일명 강제 유형 전환
  • 하위 클래스 인용은 상위 클래스의 대상을 가리키며 여기에 강제 변환을 해야 하며 하위 클래스 특유의 방법을 호출할 수 있다.
  • 변환을 수행하려면 변환 조건이 충족되어야 합니다. 1, 사실상 상향 변환 복원
  • Animal a = new Dog();
    Dog d = (Dog)a;
    

    2. 아래로 전환하면 하위 클래스 자신만의 방법을 사용할 수 있다.3. 키워드 instanceof로 실행할 때 대상이 특정한 유형의 실례 특징을 충족시키는지 판단한다. - 만약에'인stanceof'키워드의 왼쪽 대상이 오른쪽 클래스의 실례라면true로 되돌아간다. 그렇지 않으면false로 되돌아간다. - 오른쪽이 대상 실례의 유형, 그 자체의 유형, 그리고 그의 부류의 유형일 때true4로 되돌아온다. 형제 간의 강제 유형 전환을 할 수 없다. 만약에 이 문법을 작성한다면컴파일링은 오류를 보고하지 않지만, 운행 과정은 오류를 보고합니다.
    한 방법으로 전참할 때 먼저 위로 부류로 전환한 다음에 실제 상황에 따라 원래의 유형으로 전환하여 아래로 전환한다
    public void feed(Animal obj) {
    		obj.eat();
    		if(obj instanceof Cat) {
    			((Cat) obj).playBall();
    		} else if(obj instanceof Dog) {
    			((Dog) obj).sleep();
    		}
    	}
    

    좋은 웹페이지 즐겨찾기