温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java如何定义interface接口

发布时间:2022-06-08 10:36:41 来源:亿速云 阅读:188 作者:zzz 栏目:开发技术

今天小编给大家分享一下Java如何定义interface接口的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    1.接口定义

    基本介绍

    接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,在根据具体情况把这些 方法写出来。

    语法 

    interface 接口名{
    //属性
    1方法
    }
    接口

    •class 类名 implements 接口{
    自己属性;
    自己方法;
    必须实现的接口的抽象方法
    }

    示例

    inerface01.java

    package com.demo.Interface_;
    public class inerface01 {
        public static void main(String[] args) {
            //创建手机相机对象
            camera c1=new camera();
            phone p1=new phone();
            //创建电脑对象
            computer cc=new computer();
            //相机工作
            cc.work(c1);
            //手机工作
            cc.work(p1);
        }
    }

    usb.java

    package com.demo.Interface_;
    public interface usb {//接口
        //规定接口的相关方法
        public void start();
        public void end();
    }

    computer.java

    package com.demo.Interface_;
    public class computer {
        //编写一个方法
        public void work(usb it){
            //通过接口调用方法
            it.start();
            it.end();
        }
    }

    camera.java

    package com.demo.Interface_;
    //相机实现接口usb
    public class camera implements usb{
        @Override
        public void start() {
            System.out.println("相机开始了工作");
        }
        @Override
        public void end() {
            System.out.println("相机停止了工作");
        }
    }

    phone.java

    package com.demo.Interface_;
    //phone类实现usb接口中的方法
    public class phone implements usb{
        @Override
        public void start() {
            System.out.println("手机开始了工作");
        }
        @Override
        public void end() {
            System.out.println("手机停止了工作");
        }
    }

    测试结果

    Java如何定义interface接口

    2.接口细节01

    1.在jdk7.0之前,接口里所有有的方法都没有方法体,都是抽象方法、.

    2.jdk8.0后接口可以有静态方法,默认方法,也就是说接口中可以有方法的具体实现

    示例

    Ainter.java

    package com.demo.Interface_;
    public interface Ainter {//接口
        //写属性
        public int n1=999;
        //写方法
        public void hi();//抽象方法abstract可也可不写
    //    1.在jdk7.0之前,接口里所有有的方法都没有方法体,都是抽象方法、.
    //    2.jdk8.0后接口可以有静态方法,默认方法,也就是说接口中可以有方法的具体实现
    //    3.但需要defaul关键字修饰;
        default public void ok(){
            System.out.println("ok.....");
        }
        //jdk8后,可以有静态方法
        public static void cry(){
            System.out.println("cry.....");
        }
    }

    interface02.java

    public class interface02 {
        public static void main(String[] args) {
            A a = new A();
            a.hi();
            a.ok();
            a.cry();
        }
    }
    //如果一个类连接了接口,需要将接口中的方法全都实现
    class A implements Ainter{
        public void hi(){
            System.out.println("hi.....");
        };
         public void ok(){
            System.out.println("ok.....");
        }
        //jdk8后,可以有静态方法
        public static void cry(){
            System.out.println("cry.....");
        }
    }

    测试结果

    Java如何定义interface接口

    3.接口细节02

    •注意事项和细节

    1)接口不能被实例化

    2)接口中所有的方法是 public方法,接口中抽象方法,可以不用abstract 修 饰

    3)一个普通类实现接口,就必须将该接口的所有方法都实现。

    4)抽象类实现接口,可以不用实现接口的方法。

    interface_detial.java

    package com.demo.Interface_;
    public class interface_detial {
        public static void main(String[] args) {
    //        1)接口不能被实例化
            //new IA();ERROR
        }
    }
    interface IA{
        //2)接口中所有的方法是 public方法,接口中抽象方法,可以不用abstract 修饰
        void say();//public 和 abstract可写可不写 
        void kk();
    }
    //        3)一个普通类实现接口,就必须将该接口的所有方法都实现。
    class cat implements IA{
        @Override
        public void say() {
            System.out.println("say.......");
        }
        @Override
        public void kk() {
            System.out.println("kk/.......");
        }
    }
    //        4)抽象类实现接口,可以不用实现接口的方法。
    abstract class dog implements IA{
    }

    4.接口细节03

    接口

    5)一个类同时可以实现多个接口

    6)接口中的属性,只能是final的,而且是 public static final 修饰符。比如: int a=1;实际上是 public static final int a=1;(必须初始化)

    (7)接口中属性的访问形式:接口名.属性名 

    8)一个接口不能继承其它的类,但是可以继承多个别的接口[举例] interface A extends B,C{}

    9)接口的修饰符只能是 public 和默认,这点和类的修饰符是一样的。

    示例interfacedetial02

    package com.demo.Interface_;
    public class interfacedetial {
        public static void main(String[] args) {
            //证明int n1=55;//等价于 public static final int n1=55;
            System.out.println("IB.n1="+IB.n1);//说明n1是static;
            //IB.n1=60;ERROR,说明n1是final
            N G = new N();
            System.out.println("G.n="+G.n);
            System.out.println("M.n="+M.n);
            System.out.println("N.n="+N.n);
        }
    }
    //5)一个类同时可以实现多个接口。
    interface IB{
        int n1=55;//等价于 public static final int n1=55;
        void aa();
    }
    interface IC{
        void bb();
    }
    // 8)一个接口不能继承其它的类,但是可以继承多个别的接口[举例]
    interface ID extends IB,IC{
    }
    class pp implements IB,IC{
        @Override
        public void aa() {
            System.out.println("aa....");
        }
        @Override
        public void bb() {
            System.out.println("bb...");
        }
    }
    // 6)接口中的属性,只能是final的,而且是 public static final 修饰符。比如:
    //  int a=1;实际上是 public static final int a=1;(必须初始化)
    //(7)接口中属性的访问形式:接口名.属性名
    // 9)接口的修饰符只能是 public 和默认,这点和类的修饰符是一样的。
    interface M{
        int n=66;
    }
    class N implements M{
    }

    测试结果

    Java如何定义interface接口

    5.接口多态特性

    •接口的多态特性

    1)多态参数(前面案例体现) 在前面的Usb接口案例,Usb usb,既可以接收手机对象,又可以接收相机对象,就体现了接口多态(接口引用可以指向实现了接口的类的对象)

    2)多态数组 : 演示一个案例:给Usb数组中,存放 Phone 和相机对象,Phone类还有一个特有的方法call()请遍历Usb数组,如果是Phone对象,除了调用Usb 接口定义的方法外,还需要调用Phone 特有方法 call.

    3)接口存在多态传递现象.

    interfacePoly.java

    package com.demo.Interface_;
    public class interfacePoly {
        public static void main(String[] args) {
            //接口的多态体现
            //接口类型的变量可以指向实现了IF接口的对象实例
            IF if01=new QQ();
            if01 =new WW();
            //继承的多态体现
            //父类类型的变量可以指向继承了AAA的对象实例
            AAA t=new BBB();
            t=new CCC();
        }
    }
    interface IF{}
    class QQ implements IF{}
    class WW implements IF{}
    class AAA{
    }
    class BBB extends AAA{
    }
    class CCC extends AAA{
    }

    interfacePolyarr.java

    package com.demo.Interface_;
    public class interfacePolyarr {
        public static void main(String[] args) {
            //多态数组-》接口类型数组
            usbb []uu=new usbb[2];
            uu[0]=new ppp();
            uu[1]=new ttt();
            /*
            给Usb数组中,存放 Phone 和相机对象,Phone类还有一个特有的方法call()请遍历Usb数组,
            如果是Phone对象,
            除了调用Usb 接口定义的方法外,还需要调用Phone 特有方法 call.
             */
            for(int i=0;i<uu.length;i++){
                uu[i].work();//动态绑定
                //要使用call方法,需要用到线下转型
                if(uu[i] instanceof ppp){
                    ((ppp)uu[i]).call();
                }
            }
        }
    }
    interface usbb{
        void work();
    }
    class ppp implements usbb{
        public void call(){
            System.out.println("ppp........");
        }
        @Override
        public void work() {
            System.out.println("ppp在工作中");
        }
    }
    class ttt implements usbb{
        @Override
        public void work() {
            System.out.println("ttt工作中");
        }
    }

    测试结果

    Java如何定义interface接口

    以上就是“Java如何定义interface接口”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI