자바 기초-인터페이스

8196 단어 자바
인터페이스
간단 한 소개
1.1 개념
인 터 페 이 스 는 자바 에서 가장 중요 한 개념 으로 인 터 페 이 스 는 특수 한 유형 으로 이해 할 수 있 으 며 그 안 은 모두 전체 상수 와 공공 추상 적 인 방법 으로 구성 된다.만약 에 하나의 유형 이 전체 상수(static final)와 추상 적 인 방법 으로 구성 된다 면 이 를 하나의 인터페이스 인터페이스 로 정의 할 수 있 는 목적 은 자바 단일 계승 의 한계점 을 돌파 하기 위 한 것 이다.인터페이스의 장점:유연 하고 여러 인터페이스의 기능 을 동시에 사용 할 수 있다.인 터 페 이 스 는 주로 개발 규범 을 나타 낸다.
1.2 특징
인터페이스 에서 모두 추상 적 인 방법 이다.
인터페이스 키 워드 를 통 해 인 터 페 이 스 를 만 듭 니 다
  • implements 를 통 해 하위 클래스 를 실현 합 니 다
  • 4.567917.인 터 페 이 스 는 특수 한 추상 류 라 고 이해 할 수 있다.
    인터페이스 가 자바 의 단일 상속 의 한 계 를 돌파 했다인터페이스 와 클래스 간 에 많이 실현 할 수 있 고 인터페이스 와 인터페이스 간 에 많이 계승 할 수 있다.
    인 터 페 이 스 는 대외 노출 의 규칙 으로 개발 규범 이다4.567917.인 터 페 이 스 는 프로그램의 기능 확장 을 향상 시 키 고 결합 성 을 낮 추 었 다.
    1.3 입문 사례
    package cn.tedu.oop;
        //     
    public class Test1_Interface {
        public static void main(String[] args) {
            //TODO         
            //9,         ?--   ,               
    //        new Demo() 
    //8,             ,       
            Demo demo = new DemoImpl();
            demo.eat();
            demo.game();
            demo.hi();
        }
    }
    //1,           (   abstract  ),        (     )
    //3,  interface       ,  :interface    
    interface Demo{
    //2,            
        abstract public void eat() ;
        abstract public void game() ;
        //4, jdk1.8            ,   static  default  
    //    static public void hi() {}
    //    default public void hi() {}
    
        //5,               ,      public abstract 
    //    public abstract void hi() ;
        void hi() ;//    
    }
    //6,          ,    ?--         
    //class Dog extends Animal{//   ,        ,         
    class DemoImpl implements Demo{//   ,         ,        
        //7,     ,           ,        ,         
        @Override
        public void hi() {
            System.out.println("hi()...");
        }
        @Override
        public void eat() {
            System.out.println("eat()...");
        }
        @Override
        public void game() {
            System.out.println("game()...");
        }
    }
    //abstract class DemoImpl implements Demo{//   ,         ,        

    2.인터페이스의 사용법
    1.인 터 페 이 스 는 하위 클래스 가 있어 야 합 니 다.하위 클래스 는 implements 키워드 에 의 해 여러 개의 인 터 페 이 스 를 동시에 실현 할 수 있 습 니 다.2.인터페이스의 하위 클래스(추상 류 가 아니라면)는 인터페이스의 모든 추상 적 인 방법 을 실현 해 야 한다.3.인 터 페 이 스 는 대상 의 다 태 성 을 이용 하여 자 류 를 이용 하여 대상 의 실례 화 를 실현 할 수 있다.4.인 터 페 이 스 는 일반적인 클래스 와 마찬가지 로 그 자체 에 도 데이터 구성원 과 방법 이 있 지만 데이터 구성원 은 반드시 초기 에 값 을 부여 해 야 합 니 다.그리고 이 값 은 더 이상 수정 할 수 없습니다.정의 하 는 방법 은 추상 적 인 방법 과 기본 적 인 방법 이 있 을 수 있 습 니 다.추상 적 인 방법 abstact 키 워드 는 생략 할 수 있 습 니 다.기본 적 인 방법 은 default 키 워드 를 가 져 가 야 합 니 다.기본 적 인 방법 은 방법론 을 가 질 수 있 습 니5.기본 방법의 호출 은 일반 방법의 호출 과 같다.
    2.1 용법 테스트
    package cn.tedu.oop;
    //     
    //  
    //         /        
    //         (jdk1.8          )
    //          ,     public static final
    //          ,     public abstract
    public class Test2_Interface2 {
        public static void main(String[] args) {
            //3,        
            Inter in = new InterImpl();
            //in.age = 20; //   ,  ---age final 
            System.out.println( in.age );//   
            System.out.println( Inter.age );//   ,age static 
    //TODO 7,        
        String desc = in.save();
        System.out.println(desc);
    
        in.delete(10);
    }
    }
    //0,  interface    
    interface Inter{
    //1,           .Interfaces cannot have constructors
    //    public Inter() { }
    //2,       !!! --      public static final       !!
    //public static final int age = 10; 
    int age = 10 ; //    
    //4,      --     public abstract 
    //     public abstract void save() ;
    //     public abstract void delete() ;
    String save() ;//    
    void delete(int id) ;
    }
    //5,      ,          ,        
    //abstract class InterImpl implements Inter{
    class InterImpl implements Inter{
    //6,        ,       .               public
     @Override
     public String save() {
         return "    !" ;
     }
     @Override
     public void delete(int id) {
         System.out.println("delete()..."+id);
     }
    }           

    3 인터페이스의 복잡 한 용법
    인터페이스 와 클래스 간 에 많이 실현 할 수 있 고 인터페이스 와 인터페이스 간 에 테스트 를 많이 계승 할 수 있다.
    import java.io.Reader;
    
    //          
    //           ,            
    public class Test3_Interface3 {
        public static void main(String[] args) {
        //4,--2      ,     ,      ,     
        Inter2 in = new Inter2Impl() ;
        in.update();
        in.save();
        in.delete(5);
        in.get();
    }
    }    
    interface Inter1{
    void save();
    }
    interface Inter3{
    void update();
    void get();
    }
    //5,           ,   
    abstract class Impl2 extends Object implements Inter1 , Inter3{
    
    }
    //3,         --       ,     (    )
    //--Impl   ,     Inter1 Inter3     ,
    //--            ,         
    class Impl implements Inter1 , Inter3{
    @Override
    public void update() {
    }
    @Override
    public void get() {
    }
    @Override
    public void save() {
    }
    }
    //1,        --      ,     (    )
    //--2        1  3      ! 
    interface Inter2 extends Inter1 , Inter3{
    void delete(int id) ;
    }
    //2,    2      ,           
    class Inter2Impl implements Inter2{
    @Override
    public void save() {
        System.out.println(1);
    }
    @Override
    public void update() {
        System.out.println(2);
    }
    @Override
    public void get() {
        System.out.println(3);
    }
    @Override
    public void delete(int id) {
        System.out.println(4);
    }
    }

    총화
    1.클래스 와 클래스 간 의 관 계 는 상속 관계 자바 에 서 는 클 라 스 A extends B 만 지원 합 니 다.그 중에서 A 는 하위 클래스 이 고 B 는 부모 클래스 입 니 다.하위 클래스 는 부모 클래스 의 모든 기능 을 사용 할 수 있 습 니 다.방법의 재 작성 override:부모 클래스 의 기 존 기능 을 수정 하려 면 재 작성 할 수 있 습 니 다.2.인터페이스 와 인터페이스 간 의 관계:계승 관계 인터페이스의 등장 은 자바 단일 상속 의 한 계 를 돌파 하기 위 한 것 이다.인터페이스 간 에 많이 계승 할 수 있다.interface A extends B,C 중 A 는 하위 인터페이스 이 고 B 와 C 는 부모 인터페이스 입 니 다.A 는 B 와 C 의 모든 기능 을 가지 고 있 고 A 의 기능 이 가장 완전 하 다.class Impl implements AImpl 구현 클래스 는 A B C 인터페이스 에 있 는 모든 추상 적 인 방법 을 동시에 다시 써 야 합 니 다.그렇지 않 으 면 추상 적 인 클래스 입 니 다.3.클래스 와 인터페이스 간 의 관계:관계 실현 클래스 는 인 터 페 이 스 를 실현 할 수 있 고 class A implements B,CA 는 실현 클래스 이 며 B 와 C 는 인터페이스 이다.A 는 B 와 C 인터페이스 에 있 는 모든 추상 적 인 방법 을 동시에 다시 써 야 한다.그렇지 않 으 면 추상 적 인 클래스 는 계승 하 는 동시에 class A extends B implements C,DA 는 하위 클래스 라 고 할 수 있다.클래스 A 를 실현 하 는 동시에 부모 클래스 B 의 기능 을 가 지 는 동시에 인터페이스 C 와 D 의 기능 을 가 진 A 는 C 와 D 인터페이스 에 있 는 모든 추상 적 인 방법 을 동시에 다시 써 야 한다.그렇지 않 으 면 추상 적 인 클래스 가 부모 클래스 B 에 대한 방법 이 라 고 할 수 있 습 니까?수 요 를 보면 B 류 는 부류 이 고 그 안에 모두 일반적인 방법 이 라면 수정 이 필요 해 야 다시 쓸 수 있다.4.인터페이스 와 추상 류 의 차이 점,추상 류 와 인 터 페 이 스 는 모두 추상 층 이다.보통 공통점 을 추출 하 는 데 사용 되 는데 이들 은 서로 다른 점 구조 방법 을 예화 할 수 없다.추상 류 에 있 고 인터페이스 에 없다!구성원 변수:추상 류 에 있 고 인터페이스 에 없 으 며 인터페이스 에 상수 가 있 습 니 다.구성원 방법:추상 류 는 일반적인 방법 과 추상 적 인 방법 이 있 을 수 있 지만 인터페이스 에는 모두 추상 적 인 방법(jdk 1.8 이후 에 있 을 수 있 음)인터페이스 에 약자 형식 이 존재 하고 추상 류 에는 인터페이스 안의 상수 가 없다.int age=10.Public static final 인터페이스 에 있 는 방법 을 자동 으로 연결 합 니 다.void save()는 Public abstract 를 자동 으로 연결 하여 추상 적 인 층 을 어떻게 디자인 합 니까?추상 적 인 유형 으로 나타 나 는 것 입 니까?인터페이스 로 나타 나 는 것 입 니까?관건 은 방법 체 를 제공 할 필요 가 있 는 지 없 는 지 에 달 려 있다.만약 에 유형 안의 방법 이 모두 방법 체 를 제공 할 필요 가 없다 면 인터페이스 로 디자인 할 수 있다.만약 에 유형 안의 방법 이 방법 을 제공 해 야 한다 면 추상 류 로 디자인 할 수 있다.추상 층 은 추상 류 가 좋 은 지 인터페이스 가 좋 은 지 실현 류 가 여러 가지 기능 을 동시에 가 지 려 면 인 터 페 이 스 를 선택 하 는 것 이 좋다.인 터 페 이 스 는 많이 계승 하고 많이 실현 할 수 있 기 때문이다.추상 류 로 설계 된다 면 자 류 는 부 류 를 하나만 물 려 받 을 수 있 고 단 한 번 의 상속권 만 물 려 받 을 수 있다.
    5 프로 그래 밍
    수요:구체 적 인 사무:배 우 반 선생님,고수 반 선생님 의 공통점:수업 준비,강의 테스트:흔히 볼 수 있 는 다 중 대상 테스트 분석:인터페이스 프로 그래 밍 을 위 한 디자인 사상 1.자 류 를 보 는 공통성 기능 을 위로 추출 하여 부 류 를 형성 합 니 다.2.부 류 를 추출 층 으로 수식 할 까요?프로 그래 밍 의 결 과 를 보면 추상 층 은 추상 류 일 수도 있 고 인터페이스 일 수도 있다.3.추상 층 이 모두 추상 적 인 방법 이 라면 직접 인터페이스 4 로 디자인 한다.추상 적 인 것 이 일반적인 방법 이 필요 하 다 면 추상 류 로 디자인 한다.
    package cn.tedu.oop;
    interface Teacher {
        void ready() ;
        void teach() ;
        }
    --ActTeacher 
    package cn.tedu.oop;
    //          
    //  :   /   
    public class ActTeacher implements Teacher{
        public void ready() {
            System.out.println("          ");
        }
        public void teach() {
            System.out.println("          ");
        }
    }
    
    --CgbTeacher 
    package cn.tedu.oop;
    //          
    //  :    /   
    //6,          ,          ,       
    abstract public class CgbTeacher implements Teacher{
    
    }
    
    --   
    package cn.tedu.oop;
    //       
    public class Test4_Design {
        public static void main(String[] args) {
            //        ,       
    //        Teacher t  = new Teacher();
            //        --          
            Teacher t  =  new ActTeacher() ;
            //      ,          
            t.ready();
            t.teach();
        }
    }

    좋은 웹페이지 즐겨찾기