13. 다태적 이점

2919 단어

다태적 이점


멀티태스킹:
  • 값이 같은 행위로 여러 가지 다른 변현 형식을 가진다
  • 전제 조건
  • 계승 또는 실현(부류, 추상류, 인터페이스)[양자택일]
  • 방법의 재작성 [의미 구현]
  • 부류 인용은 부류 대상을 가리킨다[격식표현]
  • 서식
  • = new ( );
  • \ = new \( );

  • 부류 유형: 부류 대상이 부류 유형을 계승하거나 실현된 부류 인터페이스 유형을 가리킨다.
    다중 모드 호출 방법을 사용할 때 먼저 부류에 이 방법이 있는지 확인하고 없으면 컴파일 오류가 발생합니다.만약 있다면, 실행하는 것은 하위 클래스를 다시 쓰기 (계승) 한 후의 방법이다
    다태적 장점: 실제 개발에서 부류 유형은 방법 형식의 매개 변수로 서브 대상을 방법에 전달하고 방법을 조정하여 책의 다태적 확장성과 편리함을 나타낼 수 있다.

    참조 유형 변환

  • 상향 전환: 다태적 자체는 하위 클래스 유형이 상위 클래스로 전환되는 과정이고 이 과정은 기본적이다.부모 유형 인용이 하위 클래스의 대상을 가리킬 때 위로 전환됩니다.
  • 아래로 전환: 부류 유형이 하류 유형으로 전환하는 과정은 강제적이다.상향 변환된 하위 대상은 부류 인용을 하위 인용으로 변환하고 강제 형식 변환의 형식을 사용할 수 있으며, 바로 하향 변환이다. = ( ) ;

  • 왜 변신해야 합니까?
    다중 모드 호출 방법을 사용할 때 먼저 부류가 이 방법이 있는지 확인하고 없으면 컴파일 오류가 발생한다. 즉, 다중 모드는 부류가 가지고 있는 방법이 없고 부류가 없는 방법을 호출할 수 없다. 이것이 바로 다중 모드가 부족한 것이다. 그러면 아래로 전환하고 부류가 가지고 있는 유일한 방법을 호출해야 한다.
    전환 검증 instanceof: instanceof 변수가 이 데이터 형식에 속하면true로 되돌아오고false로 되돌아오면 아래로 전환할 때 판단할 수 있습니다
    이음매와 다태적 밤:
  • USB 커넥터
  • public interface USB {
    
        void open();
        void close();
    }
    
  • Mouse 마우스 클래스
  • public class Mouse implements USB {
    
        public Mouse() {}
    
        @Override
        public void open() {
            System.out.println(" ");
        }
    
        @Override
        public void close() {
            System.out.println(" ");
        }
    
        public void click() {
            System.out.println(" ");
        }
    }
    
  • 키보드 클래스
  • public class KeyBord implements USB {
    
        @Override
        public void open() {
            System.out.println(" ");
        }
    
        @Override
        public void close() {
            System.out.println(" ");
        }
    
        public void tupe() {
            System.out.println(" ");
        }
    }
    
  • 랩탑 노트북 클래스
  • public class Laptop {
    
        public void run() {
            System.out.println(" 。。。。");
        }
    
        public void useUSB(USB usb) {
            if(usb != null) {
                //  ( )
                usb.open();
    
                //  
                if(usb instanceof Mouse) {
                    Mouse mouse = (Mouse) usb;
                    mouse.click();
                } else if( usb instanceof KeyBord) {
                    KeyBord keyBord = (KeyBord) usb;
                    keyBord.tupe();
                }
    
                //  
                usb.close();
            }
        }
    
        public void shutDown() {
            System.out.println(" 。。。。。");
        }
    }
    
  • Main 테스트 클래스
  • public class Main {
    
        public static void main(String[] args) {
            Laptop laptop = new Laptop();
            Mouse mouse = new Mouse();
            KeyBord keyBord = new KeyBord();
    
            laptop.run();
    
            laptop.useUSB(mouse);
            laptop.useUSB(keyBord);
    
            laptop.shutDown();
        }
    }
    

    좋은 웹페이지 즐겨찾기