> Java > java지도 시간 > 본문

JAVA 인터페이스 및 추상 클래스에 대한 자세한 분석

WBOY
풀어 주다: 2022-07-08 14:42:25
앞으로
1652명이 탐색했습니다.

이 기사에서는 주로 인터페이스 및 추상 클래스와 관련된 문제를 정리하는 java에 대한 관련 지식을 제공합니다. 여러 클래스에서 클래스를 파생시키고 모든 속성과 메서드를 상속해야 하는 경우 JAVA 인터페이스를 사용할 필요가 없습니다. 다중 상속을 구현해 보겠습니다. 모두에게 도움이 되기를 바랍니다.

JAVA 인터페이스 및 추상 클래스에 대한 자세한 분석

추천 학습: "java 비디오 튜토리얼"

Interface

Overview

  1. 여러 클래스에서 클래스를 파생해야 하는 경우 해당 클래스의 모든 속성과 메서드를 상속, JAVA에는 다중 상속이 없습니다. 여러 클래스에서
  2. 공통적인 행동 특성
  3. 을 추출하려면 인터페이스를 사용하여 구현해야 하며, 이들 사이에는 is-a 관계가 없습니다. 또한 인터페이스의 도움으로 구현해야 합니다.
  4. 인터페이스의 본질은 다음과 같습니다. 계약 및 사양

정의하려면 인터페이스에서

  1. 인터페이스를 사용하세요.
  2. 인터페이스와 클래스는 서로 다른 구조입니다.
  3. 생성자 는 인터페이스에서 정의할 수 없습니다. (인스턴스화할 수 없습니다)
  4. 인터페이스는 클래스를 통해 구현을 구현합니다
  5. JAVA 클래스는 여러 인터페이스 형식을 구현할 수 있습니다. 클래스 AA는 BB 인터페이스 CC를 확장하고, DD
  6. 인터페이스는 상속될 수 있으며, 다중 상속
  7. 인터페이스는 다형성을 구현합니다
public class UsbTest {
    public static void main(String[] args) {
        Computer com =new Computer();
        Flash flash=new Flash();
        com.transferData(flash); // USB usb =new Flash()
        com.transferData(new Printer());
        /*
		* U盘开始工作
		* 传输数据
		* U盘结束工作
		* 打印机开始工作
		* 传输数据
		* 打印机结束工作
		* 
		* */
    }}class Computer{
    public void transferData(USB usb){
        usb.start();
        System.out.println("传输数据");
        usb.stop();
    }}interface USB{
    void start();
    void stop();}class Flash implements USB{

    @Override
    public void start() {
        System.out.println("U盘开始工作");
    }

    @Override
    public void stop() {
        System.out.println("U盘结束工作");

    }}class Printer implements USB{

    @Override
    public void start() {
        System.out.println("打印机开始工作");

    }

    @Override
    public void stop() {
        System.out.println("打印机结束工作");

    }}
로그인 후 복사
  1. JDK8
  • 인터페이스에 정의된 정적 메소드는 인터페이스를 통해서만 호출할 수 있습니다.
  • 인터페이스의 기본 메소드는 구현 클래스의 객체를 통해 구현될 수 있습니다.
  • 하위 클래스(또는 구현 클래스)가 상위 클래스를 상속하는 경우 클래스와 구현된 인터페이스는 동일한 이름과 동일한 매개변수를 가진 메소드를 선언합니다. 하위 클래스가 이 메소드를 재정의하지 않으면 상위 클래스에서 동일한 이름과 동일한 매개변수를 가진 메소드가 호출됩니다.
public class JDK8Test {
    public static void main(String[] args) {
        SubClass sub =new SubClass();
        CompareA.methods1();
        sub.methods2();
        /*
        * Compare 北京
		* Compare 上海
        */
    }}class SubClass implements CompareA{}interface CompareA{
    public static void methods1() {
        System.out.println("Compare 北京");
    }
    public default void methods2() {
        System.out.println("Compare 上海");
    }}
로그인 후 복사

에이전트 모드

  1. 프록시 모드는 다른 객체에 대한 프록시를 제공하는 것입니다. 이 객체에 대한 액세스를 제어합니다
  2. Instance
public class NetWorkTest {
    public static void main(String[] args) {
        Server server=new Server();
        ProxyServer proxyServer=new ProxyServer(server); // 放的是被代理对象进去
        proxyServer.browse(); // 调用的是代理对象,但结果是真实对象的方法被调用
        /*
        * 检查工作
		* 真实服务器访问网络
        */
    }}interface NetWork{
    void browse();}// 被代理类class Server implements NetWork{

    @Override
    public void browse() {
        System.out.println("真实服务器访问网络");
    }}// 代理类class ProxyServer implements NetWork{
    private NetWork work;
    public ProxyServer(NetWork work){
        this.work=work;
    }
    public void check(){
        System.out.println("检查工作");
    }

    @Override
    public void browse() {
        check();
        work.browse();
    }}
로그인 후 복사

내부 클래스

  1. JAVA에서는 클래스 A가 다른 클래스 B에서 선언될 수 있으며, 클래스 A는 내부 클래스입니다. 클래스 B는 외부 클래스입니다
  2. 내부 클래스 분류
  • 멤버 내부 클래스
    • static static
    • non-static
  • 로컬 내부 클래스
    • 내부 메소드
    • 내부 코드 블록
    • 생성자 내
    내부 클래스 객체
public class InnerClassTest {
    public static void main(String[] args) {
        // 实例化Dog,静态类
        Pseson.Dog dog=new Pseson.Dog();
        dog.eat();
        // 吃骨头
        // 实例化Cat,非静态类
        Pseson p1 =new Pseson();
        Pseson.Cat cat=p1.new Cat();
        cat.eat();
        // 猫吃鱼
    }}class Pseson{
    String name;
    int age;
    public void eat(){
        System.out.println("吃饭");
    }
    static class Dog{
        String name;
        int age;
        public void eat(){
            System.out.println("吃骨头");
        }
    }
    class Cat{
        public void eat(){
            System.out.println("猫吃鱼");
        }
    }}
로그인 후 복사
  1. r
    public class InnerClassTest {
        public static void main(String[] args) {
            // 实例化Cat,非静态类
            Pseson p1 =new Pseson();
            Pseson.Cat cat=p1.new Cat();
            cat.eat();
            cat.display("小花");
            /*
            * 小花
            * 波斯猫
            * 人
            */ 
        }}class Pseson{
        String name="人";
        int age;
        public void eat(){
            System.out.println("吃饭");
        }
        static class Dog{
            String name;
            int age;
            public void eat(){
                System.out.println("吃骨头");
            }
        }
        class Cat{
            String name="波斯猫";
            public void eat(){
                System.out.println("猫吃鱼");
            }
            public void display(String name){
                System.out.println(name); // 方法中name
                System.out.println(this.name); // 内部类中name
                System.out.println(Pseson.this.name); // 外部类中name
    
            }
        }}
    로그인 후 복사
    sameness 사이의 계층은 상속 된 방법을 포함 할 수 없습니다 클래스에는 생성자가 있고 인터페이스에는 생성자가 없습니다. 추상 클래스에는 단일 상속만 있는 반면, 인터페이스에는 다중 상속이 있을 수 있으며 인터페이스는 구현을 구현합니다.
  1. 권장 학습: "
  2. java 비디오 튜토리얼
"

    위 내용은 JAVA 인터페이스 및 추상 클래스에 대한 자세한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    관련 라벨:
    원천:csdn.net
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿