继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Java个人学习笔记--接口

慕粉小超
关注TA
已关注
手记 7
粉丝 4
获赞 51

1.接口的概念
--接口可以理解为一种特殊的类,有全局常量和公共的抽象方法所组成。
--类是一种具体实现体,接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些类里方法的实现细节,它只规定这些类里必须提供某些方法。
--定义接口不再使用class关键字,而是使用interface关键字。
2.接口定义的基本语法:
[修饰符] interface 接口名 [extends 父接口1,父接口2...]
{
零个到多个常量定义...
零个到多个抽象方法的定义
}
--接口就是用来被继承、被实现的,修饰符一般建议用public。
注意:不能使用private 和protect 修饰接口
interface前一定有一个abstract关键字,如果没写,系统会自动加上abstract。
--接口可以继承多个父接口。(与普通类不同,类是单继承的)
--接口中的属性是常量,及时定义时不添加public static final 修饰符,系统也会自动加上。
--接口中的方法只能是抽象方法,总是使用,及时定义时不添加public abstract修饰符,系统也会自动加上。
3. 使用接口
一个类可以实现一个或多个接口,实现接口使用implements关键字。Java中一个类只能继承一个父类,不够灵活,通过实现多个接口可以做补充。
4. 继承父类实现接口的语法为:
[修饰符] class 类名 extends 父类 implements 接口1,接口2...
{
类体部分//如果继承了抽象类,需要实现继承的抽象方法;要实现接口中的抽象方法。
}
-- 如果要继承父类,继承父类必须在实现接口之前

5.例子

//定义一个Telephone类:
package com.yinyong;

public abstract class Telephone {
    public abstract void Call();//抽象方法没有方法体,以分号结束。
    public abstract void Message();

}
//定义一个接口IPlayGame :
package com.yinyong;

public interface IPlayGame {
    public void playGame();//接口里的函数不能有函数体。

}
/*
接口类也属于抽象类,定义接口时可以加上abstract关键字,public interface IPlayGame{...},如果不写abstract系统也会自动给加上abstract的,所以一般不用写。
*/
//接口中的方法也都是抽象方法。
//定义一个SmartPhone类,实现接口IPlayGame:
package com.yinyong;

public class smartPhone extends Telephone implements IPlayGame{

    @Override
    public void Call() {
        // TODO Auto-generated method stub
        System.out.println("语音实现打电话");

    }

    @Override
    public void Message() {
        // TODO Auto-generated method stub
        System.out.println("语音实现发短信");

    }

    @Override
    public void playGame() {
        // TODO Auto-generated method stub
        System.out.println("智能手机具有了玩游戏的功能");

    }

}
//定义一个游戏机Psp类(不属于手机,但是可以玩游戏)
package com.yinyong;

public class Psp implements IPlayGame {

    @Override
    public void playGame() {
        // TODO Auto-generated method stub
        System.out.println("游戏机具有了玩游戏的功能");

    }

}
//测试类,main()函数:
package com.yinyong;

public class test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Telephone obj2 = new SmartPhone();
        obj2.Call();
        obj2.Message();
        IPlayGame ipg1 = new SmartPhone();//定义一个接口的引用指向实现了接口的对象
        IPlayGame ipg2 = new Psp();//定义一个接口的引用指向实现了接口的对象
        ipg1.playGame();
        ipg2.playGame();

    }

}

以上程序输出结果如下:
语音实现打电话
语音实现发短信
智能手机具有了玩游戏的功能
游戏机具有了玩游戏的功能
使用匿名内部类的方式实现接口

6.接口与匿名内部类配合使用
接口在使用过程当中,还经常与匿名内部类配合使用。
匿名内部类:就是没有名字的内部类,多用于关注实现而不关注实现类的名称。
语法格式:
Interface i = new Interface(){
public void method(){
System.out.println("匿名内部类实现接口的方式");
}
};

例子:
如,在上面的main函数中 ,添加如下代码:

        IPlayGame ipg3 = new IPlayGame(){

            @Override
            public void playGame() {
                // TODO Auto-generated method stub
                System.out.println("使用匿名内部类的方式实现接口");

            }

        };
        ipg3.playGame();

输出结果如下:
语音实现打电话
语音实现发短信
智能手机具有了玩游戏的功能
游戏机具有了玩游戏的功能
使用匿名内部类的方式实现接口

//还可以直接new接口来实现:
//接着上面的程序,在main函数中加如下代码:
        new IPlayGame(){

            @Override
            public void playGame() {
                // TODO Auto-generated method stub
                System.out.println("直接new接口使用匿名内部类方式实现接口");
            }

        }.playGame();

程序输出为:
语音实现打电话
语音实现发短信
智能手机具有了玩游戏的功能
游戏机具有了玩游戏的功能
使用匿名内部类的方式实现接口
直接new接口使用匿名内部类方式实现接口

打开App,阅读手记
3人推荐
发表评论
随时随地看视频慕课网APP