接口

* 1,接口:
*      接口是更加彻底的抽象。在JDK1.8之前接口中只能是抽象方法和常量
*      接口体现的是规范思想,实现接口的子类必须重写完接口的全部抽象方法
*   接口的定义:
*      修饰符 interface 接口名称{
*          在JDK1.8之前接口中只能是抽象方法和常量
*      }
*   接口成分:
*     在JDK1.8之前接口中只能是抽象方法和常量
*      1,抽象方法
*          接口中的抽象方法可以省略public abstract不写,默认加上
*      2,常量:常量值只有一个,而且在程序运行的过程中不可更改
*          常量一般修饰符是public static final
*          常量的变量名称建议字母全都是大写,多个单词用"_"连接
*          接口中常量是可以省略public static final不写默认会加上
*          public static final String SCHOOL_NAME = "逗逼";
*
*      小结:
*      接口体现的是规范思想
*      在JDK1.8之前接口中只能是抽象方法和常量
*      接口中的抽象方法  可以省略public abstract不写,默认加上
*      接口中常量   可以省略public static final不写默认会加上
*      除此之外没有其他成分包括构造器
*
* 2,接口的基本实现:
*      子类   继承   父类
*      实现类  实现  接口
*      类与类是继承关系
*      类与接口是实现关系,接口是被类实现的
*      实现接口的类称为;实现类
*   类实现接口的格式
*      修饰符 class 实现类名称 implements 接口1,接口2...{
*
*      }
*   小结;
*      一个类实现接口,这个类称为实现类
*      接口是用来被类实现的,实现的关键字implements接口是可多实现
*      一个类实现接口必须重写完接口中全部的抽象方法,否则这个类要定义成抽象类
*3,接口与接口的多继承
*      类与类单继承:一个类只能继承一个直接父类
*      类与接口多实现:一个类可以同时实现多个接口
*      接口与接口多继承:一个接口可以同时继承多个接口
*

 

public class DemoInterface01 {
    public static void main(String[] args) {
        PingPongMan man = new PingPongMan("逗逼");
        man.run();
        man.competition();
    }
}

interface SportMan{
    //public abstract void run();
    void run();
    void competition();
}

class PingPongMan implements SportMan{
    
    private String name;
    public PingPongMan(String name) {
        this.name = name;
    }
    
    @Override
    public void run() {
        System.out.println(name + "跑");
    }
    
    @Override
    public void competition() {
        System.out.println(name + "比赛");
    }
}

interface Law{
    void rule();
}

interface Go{
    void go();
}

//接口与接口的多继承,用一个接口合并多个借口
interface play extends Law,Go{
    void play();
}

class YaHou implements play{
    
    @Override
    public void rule() {
    
    }
    
    @Override
    public void go() {
    
    }
    
    @Override
    public void play() {
    
    }
  JDK1.8之前的接口中只能是抽象方法和常量
*      JDK1.8开始之后新增的三个方法
*          (1)默认方法:其实就是实例方法
*                --必须用default修饰
*                --默认会加public
*                --只能用接口的是实现类的对象调用
*          (2)静态方法:
*                --可以直接加static修饰
*                --默认会加public修饰
*                --只能用接口的类名本身调用
*          (3)私有方法:1.9才开始支持
*                -- 其实就是私有的实例方法,必须加private修饰
*
*      1,如果实现多个接口,多个接口中存在同名的静态方法并不会冲突
*      原因只能通过各自几口名访问各自的静态方法
*
*      2,当一个类,既继承一个父类(亲爹),又实现多个接口(干爹)时   //亲爹只有一个,干 *        爹越多越好
*       父类(亲爹)中的成员方法与接口(干爹)中的默认方法重名,子类就近选择执行父类(亲爹) *        的成员方法
*
*      3,当类实现多个接口,多个接口中存在同名的默认方法
*      实现类必须重写这个方法、、大义灭亲,干爹亲爹都不要
*
*      4,接口中,没有构造器,不能创建对象
*      接口时更彻底的抽象,连构造器都没有自然不能创建对象
*
*  面试:抽象类与接口的区别
*      相同点:都有抽象方法,都不能创建对象,都是被子类要么继承,要么实现
*      不同点:
*          抽象类;不仅抽象方法,还有构造器,还有普通成员变量,还有普通方法,还有静态成                   员变量,静态方法,普通类有的都有
*              缺点:单继承
*           接口:只有抽象方法和常量,外加1.8之后的三种方法,虽然没有抽象类丰富,但可以*                多实现
*
*
public class DemoInterface02 {
    public static void main(String[] args) {
        new YaHou1().run();
        
        SportMan1.go();//接口的静态方法只能用接口的类名本身调用
    }
}

interface SportMan1{
    default void run(){
        System.out.println("跑");
    }

    //只能用接口的类名本身调用
    static void go(){
        System.out.println("跑");
    }
    
    //私有方法通常是给私有方法或者默认方法调用的
    private void play(){
        System.out.println("玩");
    }
}
class YaHou1 implements SportMan1{}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值