接口

1.概念

  • 接口可以理解为一种特殊的类,由全局常量和公共的抽象方法组成。
  • 类是一种具体的实现体,而接口则是定义了某一批类所需要遵守的规则,接口不关心这些类的内部数据也不关心这些类内部方法的实现细节,它只规定这些类必须提供某些方法。

2.关键字

  • 和类定义不同定义接口不使用class关键字,而是用interface关键字。

3.语法格式

  • [修饰符] abstract interface 接口名 [extends 父接口1,父接口2……]{
    0到多个常量定义;
    0到多个抽象方法的定义;
    }

【注意:接口是用来被继承、被实现的,修饰符一般使用public】

4.接口定义

  • 常量:
    接口当中的属性是常量,即public static final修饰属性,即使定义时不添加,系统也会自动添加。

  • 方法:

    • 接口当中的方法只能是抽象方法,使用public abstract修饰,即使定义时不添加,系统也会自动添加。

    • 接口中的方法没有方法体 。

    • 当类实现某个接口时,它必须实现接口中所有的抽象方法,否则这个类必须被定义为抽象类。

    • 接口没有构造方法,不能被实例化,在接口中定义构造方法是非法的。

    • 抽象类中可以没有抽象方法,但包含了抽象方法的类必须被定义为抽象类。

    • 抽象类中可以有非抽象的构造方法,创建子类的实例时可能会调用这些构造方法。

  • 修饰符

    • 抽象类及抽象方法不能被final修饰符修饰。final和abstract 不能连用,同样private和abstract不能连用。

    • 接口中的成员变量默认都是public、static、final类型的,必须被显式初始化。

    • 接口中的方法默认都是public、abstract类型的。

5.使用接口

  • 一个类可以实现一个或多个接口,实现接口使用implements关键字,java中一个类只能继承一个父类,是不够灵活的通过实现多个接口可以做补充。

  • 继承父类实现接口的语法为:
    [修饰符] class 类名 extends 父类 implements 接口1,接口2……{
    //类题部分,如果继承了抽象类,需要实现继承的抽象方法,要实现接口的抽象方法
    }

6.代码

接口

public interface IPlayGame {
    public void IPlayGame();
}

实现接口

public class Psp implements IPlayGame {

    public void IPlayGame() {
        // TODO Auto-generated method stub
        System.out.println("psp具有玩游戏的功能!!");
    }

}

继承父类实现接口

public class HuaWei extends Telphone implements IPlayGame{

    public void call() {
        // TODO Auto-generated method stub
        System.out.println("可以通过WIFI打电话!");
    }

    public void message() {
        // TODO Auto-generated method stub
        System.out.println("可以通过虚拟键盘发短信!");
    }

    public void IPlayGame() {
        // TODO Auto-generated method stub
        System.out.println("HuaWei手机可以玩游戏!!");
    }

}

另一个不需要继承父类的类实现接口

public class Psp implements IPlayGame {

    public void IPlayGame() {
        // TODO Auto-generated method stub
        System.out.println("psp具有玩游戏的功能!!");
    }

}

测试类

        IPlayGame ipg=new HuaWei();
        ipg.IPlayGame();
        IPlayGame ipg2=new Psp();
        ipg2.IPlayGame();

结果:

HuaWei手机可以玩游戏!!
psp具有玩游戏的功能!!

7.匿名内部类

  • 定义:在接口的使用过程中,经常与匿名内部类配合使用。
    匿名内部类就是没有名字的内部类,多用于关注实现不关注实现类的名称。

  • 命名格式:
    interface i=new interface(){
    public void method(){
    System.out.println(“匿名内部类的实现方法”);
    }
    };
    i.method();//接口的引用直接调用method方法

  • 代码

测试类中:
方法一

        IPlayGame ipg3=new IPlayGame(){
            public void IPlayGame() {
                // TODO Auto-generated method stub
                System.out.println("使用匿名内部类的方式实现接口!");
            }

        };
        ipg3.IPlayGame();//接口的引用直接调用playgame方法

方法二(常用这种方式)

        new IPlayGame(){
            public void IPlayGame() {               
                System.out.println("使用匿名内部类的方式实现接口2!");
            }
        }.IPlayGame();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值