zoukankan      html  css  js  c++  java
  • java中的接口

    接口的概述

      接口技术用于描述类具有什么功能,但并不给出具体实现,类要遵从接口描述的统一规则进行定义,所以,接口是对外提供的一组规则,标准。

    简单来说接口就是比抽象类还要抽象。(在接口中的方法默认有abstract)

    接口的定义

      定义接口使用关键字interface

        interface 接口名 {};

      类与接口时实现关系,用implements表示

        class 类名 implements 接口名

    创建接口的方式:在和创建类一样,只不过是创建一个接口文件

     栗子:

    创建一个

    package dome4;
    
    public interface ab {   //定义一个接口
        public abstract void eat();   //接口方法默认有abstract
    }

    创建一个类实现接口

    package dome4;
    
    public class q implements ab{
        @Override   //重写
        public void eat() {
            System.out.println("啃骨头");
        }
    }

    测试类

    package dome4;
    
    public class Test {
        public static void main(String[] args) {
    
            //ab sm= new ab();
            ab sm=new q();
            sm.eat();
        }
    
    
    }

    接口创建对象的特点

      接口不能实例化,如果要实例化接口,可以通过多态的方式实例化子类对象

      接口的子类(实现类)可以是抽象类,也可以是普通类

    接口继承关系的特点

      接口与接口之间的关系

        继承关系,可以多继承,格式;

        接口extends 接口1,接口2,接口3......

      继承和实现的区别

        继承体现的是“is a”的关系,父类中定义共性内容

        实现体现的是“like a"的关系,接口中定义扩展内容

    类与接口之间的关系

      类与类之间:

        继承关系,只能单继承,不能多继承,但是可以多层继承

      类与接口之间:

        实现关系,可以单继承,不能多继承,但是可以多层继承

      接口与接口之间:

        继承关系,可以单继承,也可以多继承

      总结:

        对于一个类来讲,它的父类(继承关系)中定义的都是:共性内容

        对于一个类来讲,它的接口(实现关系)中定义的都是:扩展内容

    接口创建对象的特点

      接口不能实例化,如果要实例化接口,可以通过多态的方式实例化子类对象

      接口的子类(实现类)可以是抽象类,也可以是普通类

    接口继承关系的特点

      接口与接口之间的关系

        继承关系,可以多继承,格式;

        接口extends 接口1,接口2,接口3......

      继承和实现的区别

        继承体现的是“is a”的关系,父类中定义共性内容

        实现体现的是“like a"的关系,接口中定义扩展内容

    类与接口之间的关系

      类与类之间:

        继承关系,只能单继承,不能多继承,但是可以多层继承

      类与接口之间:

        实现关系,可以单继承,不能多继承,但是可以多层继承

      接口与接口之间:

        继承关系,可以单继承,也可以多继承

      总结:

        对于一个类来讲,它的父类(继承关系)中定义的都是:共性内容

        对于一个类来讲,它的接口(实现关系)中定义的都是:扩展内容

    接口成员方法的特点

      成员变量

        接口中只有成员常量,没有成员变量,因为接口中所有的变量都有默认的修饰符public static final

      成员方法

        JDK7及以前只有公有的、抽象方法:在方法前面都会默认有public abstract如果没写,则系统会默认补上

          public abstract 返回值类型 方法名()

        JDK8以后,可以有默认方法和静态方法:如果是静态方法则需要用public default来进行声明,而静态方法直接用static就行了

          非静态方法:public default 返回值类型 方法名(){}

          静态方法:static 返回值类型 方法名(){}

        JDK9以后,可以有私有方法private

          private 返回值类型 方法名(){}

      构造方法

        接口不能够实例化,也没有需要初始化的成员,所以接口没有构造方法

    栗子:

    ackage dome5;
    
    public interface w {
    //    //构造方法
    //    public w(); 需要注意的是接口中是没有构造方法的
        //成员常量
        public static final int NUM=10; //成员常量一般用大写
        //JDK7及以前的写法
        void eat();
        public abstract void eat2();  //默认会有public abstract
        //JDK8多了两种写法
        public static void open(){    //静态方法
            System.out.println("我是JDK8的新特性");
        };
        public default void open2(){    //非静态方法
            System.out.println("我是非静态方法");
        }
        //JDK9可以有私有方法
        private void openj(){
            System.out.println("我是JDK9的新特性");
        }
    }
  • 相关阅读:
    Flink 作为现代数据仓库的统一引擎:Hive 集成生产就绪!
    终于要跟大家见面了,Flink 面试指南
    了解jQuery的$符号
    关于serialVersionUID的说明
    Java类更改常量后编译不生效
    ora-00054资源正忙,但指定以nowait方式
    【Servlet】基于Jsp的微信Oauth2认证
    [Maven]Maven构建可执行的jar包(包含依赖jar包)
    FTP服务FileZilla Server上传提示550 Permission denied
    nginx
  • 原文地址:https://www.cnblogs.com/zxy6/p/14240124.html
Copyright © 2011-2022 走看看