[Javase 기초] 인터페이스와 추상류

15620 단어 Javase 베이스

추상


1. 추상 클래스


자바가 대상을 대상으로 하는 데 있어서 모든 대상은 클래스로 묘사되었지만 모든 클래스가 대상을 묘사하는 데 쓰이는 것은 아니다. 만약에 하나의 클래스에 구체적인 대상을 묘사하는 충분한 정보가 포함되지 않는다면 우리는 이 종류를 추상류로 정의한다.
추상 클래스의 특징:
1. 실례화 대상에 사용할 수 없기 때문에 추상류는 반드시 계승되어야 사용할 수 있고 다른 기능은 일반류와 같다.
2. 하나의 종류는 하나의 추상류만 계승할 수 있다.
3. 추상적인 종류의 수식자는private가 될 수 없다.

2. 추상적인 방법


클래스를 설계하려면 이 클래스는 특별한 구성원 방법을 포함하고 이 방법은 하위 클래스의 행위에 따라 확정된다. 그러면 부모 클래스에서 이 방법을 추상적인 방법으로 성명한다.이어서 추상적인 방법을 포함하는 유형을 추상류라고 부른다.
추상적 방법의 주의점
1. 추상류에 반드시 추상적인 방법이 포함된 것은 아니지만 추상적인 방법이 있는 류는 반드시 추상류이다.
2. 구조 방법, 유형 방법(static 수식 방법)은 추상적인 방법으로 성명할 수 없다.
3. 추상류의 자류는 추상류 중의 추상적인 방법의 실현을 제시해야 한다. 이 자류도 추상류가 아니라면.
4, 추상적인 방법의 수식자는private가 될 수 없다.
하나의 클래스가 계승될 때 어떤 방법은 항상 다시 써야 하기 때문에 이를 추상적인 방법으로 설정할 수 있다. 추상적인 방법이 있는 클래스는 추상적인 클래스라고 하는데 이 클래스는 계승될 때 추상적인 방법은 반드시 다시 써야 한다.
  • 추상적인 방법을 포함하는 류는 반드시 추상류
  • 추상류에는 반드시 추상적인 방법이 포함되어 있다
  • 추상류와 일반류의 차이
  • 일반 클래스: 실례화 new 추상 클래스는 실례화 대상을 허용하지 않습니다
  • 추상류는 추상적인 방법을 포함할 수 있다
  • abstract class Employee{// 
        private String name;
        private String address;
        private int number;
        public Employee(String name, String address, int number) {
            super();
            this.name = name;
            this.address = address;
            this.number = number;
        }
        public void mailCheck(){
            System.out.println("mailing a check to" + this.name+" "+this.address);
        }
        public void setAddress(String newaddress){
            address = new address;
        }
        public abstract void fun();// 
    }
    class ExtendsEmployee extends Employee {// 
        public ExtendsEmployee(String name, String address, int number) {
            super(name, address, number);
            // TODO Auto-generated constructor stub }
            @Override public void fun () {// 
                // TODO Auto-generated method stub
            }
        }
        public class TestDemo {
            public static void main(String[] args) {
                Employee e = new Employee();//error  
            }
        }
    }

    이음매


    추상류에는 하나 이상의 추상적인 방법을 포함할 수 있지만 인터페이스에서 모든 방법은 추상적이어야 하며 방법체가 없어서는 안 된다. 그는 추상류보다 더욱 추상적이다.인터페이스는 그가 어떻게 해야 하는지를 규정하지 않고 무엇을 해야 하는지를 규정한다.
    인터페이스에 있는 생명의 구성원 변수는 기본적으로public static final입니다. 초기화해야 합니다.따라서 상수 성명을 할 때 이 수식자를 생략할 수 있다.약간의 상량과 추상적인 방법의 집합이다.

    1. 인터페이스의 특징


    1. 인터페이스에서 추상적인 방법만 정의한다. 이 방법들은 기본적으로public abstract이고 방법이 설명될 때 이 수식자를 생략할 수 있다.
    2. 인터페이스에서 실례 변수를 정의하고 비추상적인 실례 방법과 정적 방법은 허용되지 않는다.
    3. 인터페이스에 구조 방법이 없고 실례화될 수 없다.
    4. 하나의 인터페이스는 다른 인터페이스를 실현할 수 없지만 다른 인터페이스를 많이 계승할 수 있다.

    2. 인터페이스 사용


    1. 인터페이스의 사용은 클래스의 사용과 다소 다르다. 클래스를 사용해야 하는 곳에서는 new 키워드를 직접 사용하여 클래스의 실례를 만들지만 인터페이스는 안 된다.
    2. 인터페이스는 반드시 유형을 통해 그의 추상적인 방법을 실현해야 한다.
    3. 만약에 하나의 클래스가 인터페이스의 추상적인 방법을 실현하지 못한다면 이 클래스를 우리는 추상적인 클래스로 설계해야 한다.
    4. 인터페이스의 실례를 만들 수 없지만 인터페이스 유형을 정의하는 인용 변수는 이 인터페이스를 실현하는 클래스의 실례를 인용할 수 있습니다.
    interface InterfaceClass{
        int a=10;//  public static final  , 
        void fun();//  public abstract, 
    }
    class AchieveInterface implements InterfaceClass{
        @Override public void fun() {
            // TODO Auto-generated method stub
        }
    }

    3. 인터페이스의 응용


    관찰 프로그램의 코드:
    Interface Fruit{
        Publicvoideat();
    }
    Class AppleimplementsFruit{
            Publicvoideat(){
                System.out.println(“ ”);
            }
    }
    Public class TestDemo{
        Public static void main(String[]args){
            Fruitf = new Apple();
            f.eat();
        }
    }

    이 프로그램은 기본 클래스에서 Apple 클래스를 통해 Fruit 인터페이스 대상을 실례화하고 인터페이스 대상을 통해 eat 방법을 호출하며, 다시 쓴 방법을 호출합니다.
    이 프로그램은 인터페이스의 실례화에서 호출할 하위 클래스의 대상을 명확하게 합니다.그러나 부류에서 파생된 자류는 하나가 아니다.Class Orange implements Fruit{ }. main: Fruit f = new Orange(); 설마 매번 실례화 인터페이스의 하위 클래스를 수정해야 하는 건 아니겠지?
    자바의 JVM은 프로그램과 운영체제 간의 결합 문제를 해결하기 위해 프로그램과 운영체제 사이에 중간 과도층인 JVM을 추가하여 JVM이 서로 다른 운영체제와 일치하고 JVM의 핵심이 변하지 않으면 프로그램은 임의의 운영체제에서 이식할 수 있다.
    하위 클래스를 보지 않고 인터페이스만 볼 수 있는 방법:
    변환 위해 플랜트 클래스 추가
    Class Factory{
        Public static FruitgetInstance(StringclassName){
            if(className.equals(“apple”)){
                ReturnnewApple();
            }
            if(className.equals(“orange”)){
                ReturnnewOrange();
            }
        }
    }
    Main: 
    Fruit f = Fruit.getInstance(“apple”); 
    f.eat();

    인터페이스에는
  • 1, 상수->public static final->기본 수식자
  • 2, 추상적인 방법->public abstract->기본 수식자
  • 클래스와의 관계: 구현 -> class Name implements Name

    인터페이스와 추상류


    인터페이스와 인터페이스 사이의 관계: 계승 관계
    interface A{
    	void funA();
    }
    interface B extends A{
    	void funB();//B 
    }

    인터페이스와 클래스 간의 관계: 관계 실현
    class   implements  { }

    클래스-> 단일 상속, 다중 실현
    실현도 있고 계승도 있다
    class   extends   implements{ }

    인터페이스와 추상류의 차이


    추상 클래스: 하나의 클래스가 계승될 때 어떤 방법은 항상 다시 써야 한다
    인터페이스: 외부에 통일 함수 방법명 제공

    좋은 웹페이지 즐겨찾기