java接口

1.生活中有电源插座中的电源接口,这是生活中的接口,一种型号都一样。

接口就是一种公共的规范标准,只要符合规范标准,就可以大家通用。

如:USB接口。

 

接口就是多个类的公共规范。

接口是一种引用数据类型,最重要的内容就是其中的:抽象方法。

 

如何定义一个接口的格式:

public interface 接口名称{

//接口内容

}

备注:换成了关键字interface后,编译生成的字节码文件仍然是:.java --> .class。

 

在Java 7 中,接口可以包含的内容有:

1.常量

2.抽象方法

 

Java 8 ,还可以额外包含有:

3.默认方法

4.静态方法

 

Java 9, 还可以额外包含有:

5.私有方法

 

 

接口使用步骤:

1.接口不能直接使用,必须有一个“实现类 来实现该接口”。

格式:

public calss 实现类名称 implements 接口名称{

//...

}

 

2.接口的实现类 必须 覆盖重写(实现)接口中所有的抽象方法。

实现: 去掉abstract关键字,加上方法体大括号。

 

3.创建实现类的对象,进行使用。

 

注意事项:

如果实现类并没有覆盖重写接口中所有的抽象方法,那么这个实现类自己就必须是抽象类。

public class DemoInterface {


    public static void main(String[]args){

    //创建实现类的对象使用 不能直接new接口对象使用。
    MyInterfaceAbstractImpl impl = new MyInterfaceAbstractImpl();
    impl.methodAbstract();

        }
}

 

在任何版本的Java中,接口都能定义抽象方法:

public abstract 返回值类型 方法名称(参数列表);

 

 

注意事项:

1.接口但当中的抽象方法,修饰符必须是两个固定的关键字:public abstract

2.这两个关键字修饰符,可以选择性的省略。(现在不推荐)

public void methodAbstract();

abstract void methodAbstract();

都是抽象方法。

 

package cn.itcast.day09.java.java接口;

/*
在任何版本的Java中,接口都能定义抽象方法:
public abstract  返回值类型 方法名称(参数列表);

 注意事项:
 1.接口但当中的抽象方法,修饰符必须是两个固定的关键字:public abstract
 2.这两个关键字修饰符,可以选择性的省略。(现在不推荐)
  public  void methodAbstract();
  abstract void methodAbstract();
  都是抽象方法。
*/



public interface MyInterfaceAbstract {


    //这是一个抽象方法
//     1.接口但当中的抽象方法,修饰符必须是两个固定的关键字:public abstract
    public abstract void methodAbstract();


实现类:

package cn.itcast.day09.java.java接口;

/**
 * @Author: Jason
 * @Date: 2019/7/23 21:14
 * @Version 1.0
 */
public class MyInterfaceAbstractImpl implements MyInterfaceAbstract {

    @Override
    public void methodAbstract() {
        System.out.println("这是第一个方法!");
    }
}

 

2.从Java 8 开始,接口里允许定义默认方法: 默认方法可以有方法体。

格式:

public default 返回值类型 方法名称 (参数列表){

//方法体

}

 

备注:接口当中的默认方法,可以解决接口升级的问题

接口:

public interface MyInterfaceDefault {

    //抽象方法
    public abstract void methodAbs();

    //新添加的抽象方法 会导致后面实现类中覆盖重写的 已有的 抽象方法 改变 所以可以用 默认方法

    //  public abstract void methodAbs1();

    //public 可以省略,那还是public, default 不能

    public default void methodDefault(){
        System.out.println("这是一个新添加的默认方法!");


    }

}

 

实现类A:

package cn.itcast.day09.java.java接口;

/**
 * @Author: Jason
 * @Date: 2019/7/23 21:30
 * @Version 1.0
 */
public class MyInterfaceDefaultA implements MyInterfaceDefault{

    @Override
    public void methodAbs() {
        System.out.println("实现了抽象方法,AAAAAA");
    }
}

实现类B:

package cn.itcast.day09.java.java接口;

/**
 * @Author: Jason
 * @Date: 2019/7/23 21:30
 * @Version 1.0
 */
public class MyInterfaceDefaultB implements MyInterfaceDefault{

    @Override
    public void methodAbs() {
        System.out.println("实现了抽象方法,BBBBBB");
    }

//    2.接口的默认方法,也可以被接口实现类进行覆盖重写。
    @Override
    public  void methodDefault(){
        System.out.println("这是一个新添加的默认方法BBBB!");


    }

}

 

1.接口的默认方法,可以通过接口实现类对象,直接调用。

2.接口的默认方法,也可以被接口实现类进行覆盖重写。

public class DemoInterface02 {
    public static void main(String[] args) {

        //创建实现类对象
        MyInterfaceDefaultA a = new MyInterfaceDefaultA();
        a.methodAbs();  //调用抽象方法,实际上运行的是右侧实现类。
        //调用默认方法,如果实现类当中没有,会向上找接口。
        a.methodDefault();

        System.out.println("============================");
        MyInterfaceDefaultB b = new MyInterfaceDefaultB();
        b.methodAbs();
//        1.接口的默认方法,可以通过接口实现类对象,直接调用。
        b.methodDefault();
    }
}

 

显示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值