자바 내공 향상 의 다 형

(1) 다 태 적 실현 대상 의 다양한 형태 1. 다 태 적 부류 의 인용 을 인용 하면 본 부류 의 대상 을 가리 킬 수 있다.부모 클래스 의 인용 은 하위 클래스 의 대상 을 가리 킬 수 있 습 니 다.
public class anmals(){

}

public class dog extends animals { } public static void main(String[] , args){

    animals obj1 = new animals();//     obj1       ;
    animals obj2 = new dog();//     obj2       ;
}
2.    
       ,           ;
       ,                    ;
public class anmals(){
    public void running(){
        System.out.println("         ");
    }
}

public class dog extends animalspublic void running(){
    System.out.println("        ");
        }
}

public class cat extends animals { **             running()  ** } public static void main(String[] , args){

    animals obj1 = new animals();//     obj1       ;
    obj1.running();//       ,           ;
    animals obj2 = new dog();//       ,             ;
    obj2.running();//       ,           ;
    animals obj3 = new cat();//     obj2       ; 
    obj3.running();//       ,           ;

}
    :
             
            
             


(2) 다 중 참조 유형 변환 1. 상 향 유형 변환 (변환 방식: 암시 적 / 자동 유형 변환) 은 작은 유형 에서 큰 유형 으로 전환 합 니 다.(위험 없 음) 2. 아래로 유형 전환 (전환 방식: 강제 유형 전환) 은 큰 유형 에서 작은 유형 으로 전환 합 니 다.(위험 이 있 음) 어떻게 위험 문 제 를 피 합 니까?3. instanceof 연산 자 를 사용 하여 인용 대상 의 유형 을 해결 하고 유형 전환 의 안전성 문 제 를 피한다.문법: if (부모 클래스 instanceof 하위 클래스) (하위 클래스) 대상 = (하위 클래스) 부모 클래스 대상; 곶else{ …….. }
public static void main(String[] , args){

    dog dog_7 = new dog();
    if( animals instanceof dog){
    animals animals_7 = dog_7 ;//       ,       
    }else{
    System.out.println("             dog  ");
        }
    dog dog_9 =(dog)animals;//      
    if(animals instanceof cat){
    cat cat_7 = (cat)animals;//1.   ,cat  ;2.   ,dog  ;
            }else{
            System.out.println("             cat  ");
            }
}

    :
                  cat  
    1.     :
              abstarct     ,      ;

    2.        :
        a.       ,                    ,                   ;
        b.                     ,             ,             ;

    3.      :
                      ,        ;

    4.        :
        a. abstarct     ;
        b. abstarct      ,    ,     ;
        c.             ;
        d.              ,         ;
        e.          ,        ;
      :
     :myAnimals
public abstarct class myAnimals{
    public abstarct void run();
    public abstarct void eat();
}

    Dog,     myAnimals
public  class Dog extends myAnimals{
    //    myAnimals               run() ,eat()
    public abstarct void run(){
        System.out.println("       ");
    }
    public abstarct void eat(){
        System.out.println("         ");
    }
}
    Cat,     myAnimals
public  class Cat extends myAnimals{

    public abstarct void run(){
        System.out.println("       ");
    }
    public abstarct void eat(){
        System.out.println("         ");
    }
}
//   
public static void main( String[] , args){
    myAnimals myanimals_7 = new Dog();//          
    myanimals_7.run();
    myanimals_7.eat();
    myAnimals myanimals_9 = new Cat();//          
    myanimals_9.run();
    myanimals_9.eat();
}

    :
           
             
           
             

(3)다 중 인터페이스 a. 인터페이스의 정의: 클래스 는 구체 적 인 실현 체 이 고 인 터 페 이 스 는 특정한 유형 이 지 켜 야 할 규범 을 정의 합 니 다. 인 터 페 이 스 는 이러한 내부 데이터 에 관심 이 없고 이런 유형의 방법의 실현 디 테 일 에 도 관심 이 없습니다. 이 유형 에서 반드시 특정한 방법 을 제공 해 야 한다 고 규정 합 니 다. b. 문법: 클래스 정의 와 달리 인 터 페 이 스 를 정의 하고 class 키 워드 를 사용 하지 않 습 니 다.interface 키 워드 를 사용 합 니 다. c. 인터페이스 정의 의 기본 문법: [수정자] interface 이름 [extends 부모 인터페이스 1, 부모 인터페이스 2...]d. 인 터 페 이 스 를 수식 합 니 다. d. 인터페이스 에서 정 의 된 상수: 1) 인터페이스의 속성 은 상수 입 니 다. 정의 할 때 Public static final 장식 부 를 추가 하지 않 아 도 시스템 은 자동 으로 추 가 됩 니 다. 2) 인터페이스 에서 의 방법 은 추상 적 인 방법 일 뿐 항상 사용 합 니 다. 정의 할 때 Public static final 장식 부 를 추가 하지 않 아 도 시스템 은 자동 으로 추 가 됩 니 다. e. 인터페이스의 사용 1)하나의 클래스 는 하나 또는 여러 개의 인 터 페 이 스 를 실현 할 수 있 습 니 다. 인 터 페 이 스 는 implements 키 워드 를 사용 합 니 다. 자바 의 한 클래스 는 하나의 부모 클래스 만 계승 할 수 있 고 유연성 이 부족 합 니 다. 여러 개의 인 터 페 이 스 를 통 해 보충 할 수 있 습 니 다. 부모 클래스 를 계승 하여 인 터 페 이 스 를 실현 하 는 문법: [수정자] class 클래스 이름 extends 부모 클래스 implement 인터페이스 1, 인터페이스 2...{클래스 부분 / / 추상 류 를 계승 하려 면 계승 을 실현 하 는 추상 적 인 방법 이 필요 하 며 인터페이스 에서 추상 적 인 방법 을 실현 해 야 합 니 다.}부모 클래스 를 계승 하려 면 부모 클래스 를 계승 하려 면 인 터 페 이 스 를 실현 하기 전에!! 2) 인 터 페 이 스 를 사용 하 는 과정 에서 익명 내부 클래스 와 자주 협조 하여 사용 해 야 합 니 다. 익명 내부 클래스: 이름 이 없 는 내부 클래스 입 니 다. 실현 에 관심 을 가지 지 않 고 실현 에 관심 을 가지 지 않 는 이름 문법: Interface i = new Interface () {Public void method () {System. out. println ()"익명 내부 클래스 가 인 터 페 이 스 를 실현 하 는 방식");}; 예 를 들 어:
     :myAnimals
public abstarct class myAnimals{
    public abstarct void run();
    public abstarct void eat();
}
//      
public  interface IclimbTree{
    public  void climbtree();
}

    Dog,     myAnimals
public  class Dog extends myAnimals{
    //    myAnimals               run() ,eat()
    public abstarct void run(){
        System.out.println("       ");
    }
    public abstarct void eat(){
        System.out.println("         ");
    }
}

    Cat,     myAnimals
public  class Cat extends myAnimals implements IclimbTree{

    public abstarct void run(){
        System.out.println("       ");
    }
    public abstarct void eat(){
        System.out.println("         ");
    }
    public abstarct void climbTree(){
        System.out.println("        ");
    }
}

//      fly,      
public class fly implements climbTree {

    @Override
    public void climbtree() {
        // TODO Auto-generated method stub
        System.out.println("         !");
    }

}
//   
public static void main( String[] , args){
    /* myAnimals myanimals_7 = new Dog();//           myanimals_7.run(); myanimals_7.eat(); myAnimals myanimals_9 = new Cat();//           myanimals_9.run(); myanimals_9.eat(); */

   IclimbTree ic1 = new Cat();//              ;
   ic1.climbtree();
   IclimbTree ic2 = new fly();//              ;
   ic2.climbtree();
   //            ;
   IclimbTree ic3 = new IclimbTree(){
        public void climbtree() {
        // TODO Auto-generated method stub
        System.out.println("              !");
    }
    };
    //          IclimbTree()  
    ic3.climbtree();
}

//     new    ,   climbtree()  
new IclimbTree(){

    public void climbtree() {
        // TODO Auto-generated method stub
        System.out.println("    new                 ");
    }
    }.climbtree();

    :
            
             !
                  !
        new                 

이제 다 태 라 는 찌꺼기 를 완전히 정복 하 겠 군 ~

좋은 웹페이지 즐겨찾기