ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java SE 7、接口

2022-09-16 22:32:32  阅读:314  来源: 互联网

标签:Java usbs void 接口 public 方法 class SE


接口

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

  2. 语法

    • interface 接口名{

      ​ //属性

      ​ //方法

      }

    • class 类名 implements 接口{

      ​ 自己属性;

      ​ 自己方法;

      ​ 必须实现的接口的抽象方法

      }

  3. 在 Jdk7.0 前,接口里的所有方法都没有方法体,即都是抽象方法

    ​ Jdk8.0 后接口可以有静态(static)方法,默认(default)方法,也就是说接口中可以有方法的具体实例

  4. 细节

    1. 接口不能被实例化

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

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

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

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

    6. 接口中的属性只能是 final 的,而且是 public static final 修饰。

      ​ 比如 int a = 1; 实际上是 public static final int a = 1; (必须初始化)

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

    8. 接口不能继承其他的类,但是可以继承多个别的接口

      ​ interface A extends B,C{}

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

  5. 接口和继承

    • 继承的价值主要在于:解决代码的复用性和可维护性
    • 接口的价值主要在于:设计,设计好各种规范(方法),让其他类去实现这些方法
    • 接口比继承更加灵活,继承是满足 is - a 的关系,而接口只需满足 like - a 的关系
    • 接口在一定程度上可以实现代码解耦 [即:接口规范性 + 动态绑定机制]
  6. 接口多态参数

    • 接口类型的变量 if01 可以指向实现了IF接口类的对象实例

      IF if01 = new Monster();
      if01 = new Car();
      
      interface IF {}
      class Monster implements IF {}
      class Car implements IF {}
      
  7. 接口多态数组

    public class Interface01 {
        public static void main(String[] args) {
    
            //多态数组 -> 接口类型数组
            Usb[] usbs = new Usb[2];
            usbs[0] = new Phone_();
            usbs[1] = new Camera_();
    
            for (int i = 0; i < usbs.length; i++) {
                usbs[i].work(); //动态绑定
    
                //类型的向下转换
                if (usbs[i] instanceof Phone_) { //判断它的运行类型是
                    ((Phone_) usbs[i]).call();
                }
            }
    
        }
    }
    
    interface Usb {
        void work();
    }
    
    class Phone_ implements Usb {
        public void call() {
            System.out.println("手机可以打电话。。。");
        }
    
        @Override
        public void work() {
            System.out.println("手机工作中、、、");
        }
    }
    
    class Camera_ implements Usb {
        @Override
        public void work() {
            System.out.println("相机工作中...");
        }
    }
    
    /*
    	运行结果:
            手机工作中、、、
            手机可以打电话。。。
            相机工作中...
    */
    
  8. 接口多态传递现象

    public class InterfacePolyPass {
        public static void main(String[] args) {
    
            //接口类型的变量可以指向,实现了该接口的类的对象实例
            IG ig = new Teacher();
            //如果IG 继承了 IH 接口,而Teacher 类实现了 IG接口
            //那么,实际上就相当于 Teacher 类也实现了 IH接口
            //这就是所谓的接口多态传递现象
            IH ih = new Teacher();
        }
    }
    
    interface IH { 
        void hi();
    }
    interface IG extends IH{ }
    class Teacher implements IG {
        @Override
        public void hi() {
            
        }
    }
    

标签:Java,usbs,void,接口,public,方法,class,SE
来源: https://www.cnblogs.com/muzhe777/p/16701366.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有