• 【9】Java多态:接口


    一、接口

    接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

    接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

    除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

    接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

    1、举个栗子:

    手机可以拍照、上网、打游戏、打电话相机可以拍照,

    电脑可以上网, 玩游戏, 

    智能手表可以打电话.

    1、他们之间不能抽取具有公共特征的父类, 如果没有接口,需要创建一个手机电脑类, 手表类, 相机类, 在每个类中增加相应的功能等等。

    2、他们当中很多类中有相同行为能力的, 我们可以根据他们的行为能力来关联, 就是java 中的接口.

    2、接口与类的区别:

    • 接口不能用于实例化对象。
    • 接口没有构造方法。
    • 接口中所有的方法必须是抽象方法。
    • 接口不能包含成员变量,除了 static 和 final 变量。
    • 接口不是被类继承了,而是要被类实现。
    • 接口支持多继承。

     二、接口的实现

    声明接口:上网接口

    //接口访问修饰符:public 默认
    public interface INet {
        //访问修饰符默认public
        // 接口中抽象方法可以不写abstract关键字
        //当类实现接口时,需要去实现接口中的所有抽象方法,否则需要将该类设置为抽象类
        public void network();
    
        //接口中可以包含常量,默认public static final
        int TEMP=30;
    }    

    实现类:手机可以上网

    //可以实现多个接口
    public class FourthPhone  implements IPhoto,INet{
    
        public void network() {
            System.out.println("手机可以上网");
        }
    }

    测试类

    public class Test {
        public static void main(String[] args) {
           INet one = new FourthPhone();
            one.network();
        }
    }

    三、接口的默认方法&静态方法

    public interface INet {
    
        //default:默认方法 可以带方法体 jdk1.8后新增
        //可以在实现类中重写,并可以通过接口的引用调用
        default void connection(){
            System.out.println("我是接口中的默认链接");
        }
        
        //    static:静态方法 可以带方法体 jdk1.8后新增
        //    不可以在实现类中重写,可以同接口名调用
        static void stop(){
            System.out.println("我是接口中的静态方法");
        }
    }

     四、接口的继承

    接口也可以是实现继承,并且可以实现多继承 如果多个父类中存在默认的重名方法,则需要在子类接口中重写重名方法。

    同样也是使用使用extends关键字。

    五、问题解决

    1.多接口重名同名方法

    在继承接口的方法中会报错

    【解决】在继承接口的方法中,【重写】一个自己的同名默认方法

    2.父类与继承接口中重名其中的方法

    【默认】指向【父类当中】的重名方法若自己重写一个自己的重名方法 , 【指向子类的重写方法】

    3.多接口重重名常量处理的解决方案

    在一个类内,如果指定是若干个接口,而这若干个接口之间有同名的变量的时候,在此类中调用接口中含有同名的变量的时候也会报错。

    在上述的例子中,如果该类有继承关系的父类当中也含有与接口同名的变量,则同样会报错。

    解决此类办法的途径就是在该类中显式的定一个该同名的变量,以消除这种错误。

  • 相关阅读:
    [转]线上GC故障解决过程记录
    [转]JVM性能调优监控工具
    [转]JVM运行时内存结构
    根据PV量来确定需要进行压测的并发量
    rsync文件同步、Inotify-tools参数详解
    keepalived双BACKUP加nopreempt失效、手动监控服务脚步。
    oracle 死锁和锁等待的区别
    [转]查看处于被锁状态的表:v$locked_object dba_objects v$session all_objects v$sqlarea v$lock
    v$Session详解
    window用Xmanager4.0的Xstart连接linux远程桌面
  • 原文地址:https://www.cnblogs.com/haifeima/p/13020739.html
Copyright © 2020-2023  润新知