Java基础回顾篇5——接口

 

1:理解接口
    接口是一种规范,跟抽象类不同
    接口定义了一批需要实现的方法,只是提供方法,不提供实现,    将规范与方法分离
    抽象类体现的是一种模板式设计
    
2:接口(Java9)
    interface
    修饰符  interface 接口名 extends 父接口1,父2
        修饰符可用public 默认包访问权限、
        可继承多个父接口,,接口只能继承接口不可以继承类            说明实际上java是支持多继承的,只不过类单继承、接口多继承
        
    接口中的成员:
        成员变量:只能静态
        方法:只能抽象实例方法、类方法、默认方法、私有方法
        内部类、内部枚举
        
        不能有构造函数、代码块
        
    接口内成员权限:
        只能是public
        静态常量: public static final  默认的修饰        
            变量初始化可以构造器、初始代码块、声明时,而接口没有构造器、初始代码块,所以接口只能在声明时指定默认值
            
        方法: abstract 默认的
        普通方法: public abstract  
            普通方法不可以有方法体,
            但是类方法、默认方法、私有方法 必须要有方法体
            
        提供了默认方法,默认方法中抽离的公共方法就需要抽离出来,就是私有方法,只能本类作为工具方法使用
            private 方法不能使用 default 修饰
            private 方法可以使用 static 修饰,即为类方法,又为实体方法
        接
            default 方法不能和 static 修饰
            
        接口中的内部类、私有方法、内部枚举默认都是 public static 
        
    例子:
        public interface Test{
            default void method1(){sop(1);}
            private void method1(){sop(1);}
            static void method1(){sop(1);}
            private static void method1(){sop(1);}
        }

3:接口用途
    1) 定义变量,也可以用于强制类型转换
            声明一个引用对象时,这个引用类型必须为接口的实现类对象  Test p = new Student();    这里Student必须实现了Test接口
    2) 调用接口中的静态常量
    3) 被其他类实现
            实现方法必须为 public 接口中权限为public,子类或实现类的权限只能更大或相等
            
4:接口和抽象类的差异
    1)相同点
        <1> 都不能实例化
        <2> 都可以包含抽象方法
    2)不同点
        两者区别很大,主要体现在设计目的上
        设计目的方面:
            (1)接口作为一种规范,规定了对外提供什么服务
                 一个程序间使用接口,接口是多模块间耦合标准
                 多个程序间之间使用接口,接口是通信标准
                 接口类似整个系统的大纲,制定了各模块间的标准,因此接口通常不能轻易改变
            (2)抽象类则是模板式设计,抽象类可以说是系统的中间产品,需要进一步完善才可以作为最终产品
            
        用法上的区别:
            (1)接口中只能定义默认方法、静态方法、私有方法、抽象实例方法,不能给普通方法提供实现
                  抽象类可以有普通方法,具有方法体
            (2)接口中只可以定义静态常量,不能定义普通成员变量
                  抽象类既可以定义静态常量,又可以定义普通成员变量
            (3)接口不能有构造器
                  抽象类可以有构造器,作为子类调用初始化使用,而非创建对象使用
            (4)接口不能包含初始化块
                  抽象类可以包含初始化块
            (5)抽象类只能被类单继承
                  接口可以被类多实现,接口之间还可以多继承
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值