Java基础-接口

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。Java基础-接口,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

接口

1.1. final关键字

  • final修饰类,修饰成员变量和方法,还可以修饰方法参数
  • final修饰的类不能被继承
  • final 修饰的方法是不能被重写的
  • final修饰的成员变量不能被改动,一旦被赋值之后就不再改动了;其实就是常量了,常量命名方式使用全大写,两个单词直接使用下划线拼接 STU_AGE
  • final修饰方法参数,表示此值传入之后不能再改动了
public final class Son extends Father {
    private final int STU_AGE = 10;

    // run(2)
    public void run(final int a) {

    }
    public final void method2() {
    }
}

1.2.接口

  • 程序开发都是面向接口来开发,达到最大的灵活性;能用接口的就不用使用抽象类
  • Java只支持单继承,接口的出现可以弥补这一缺陷
  • 接口使用关键字interface声明
  • 接口的特点
    • 成员变量都是 public static final 修饰的,都是常量了
    • 方法都是 public abstract 修饰的
    • jdk8之后新增了普通的方法,前面加default修饰
  • 接口扮演的一个角色(这个角色应该具有那些功能),
  • 类和接口直接使用 implements 表示实现一个接口,一个类可以实现多个接口
  • 接口是非常特殊的抽象类
  • 接口和接口之间是继承的关系

抽象类:定义了一组类的模板,而且不需要有实例

接口:其实扮演的是一个角色(方法的定义/ 功能)

马戏团案例使用接口修改

接口定义

public interface Player {
    /**
     * 表演的方法
     */
    void play();
}

猴子类

public class Monkey implements Player {
    @Override
    public void play() {
        System.out.println("猴子表演骑单车");
    }
}

马戏团类

public class Circus {
    public void show(Player player) {
        player.play();
    }
}

测试类

public class Test {
    public static void main(String[] args) {
        Circus circus = new Circus();
        Monkey monkey = new Monkey();
        Elephant elephant = new Elephant();
        circus.show(elephant);
    }
}

一个类实现多个接口

public class Elephant implements Player,Eater{
    // Player的方法
    @Override
    public void play() {
        System.out.println("大象表演喷水");
    }
	//Eater的方法
    @Override
    public void feed() {
        System.out.println("大象喜欢吃香蕉");
    }
}

饲养员类

public class Feeder {
    public void feed(Eater eater) {
        eater.feed();
    }
}

接口之间可以是继承的关系

public interface Gamer extends Plugin {
    void game();
}

1.3. QQ接口案例

插件接口定义

public interface Plugin {
    /**
     * 插件加载的方法
     */
    void load();

    /**
     * 插件卸载的方法
     */
    void unLoad();
}

具体的实现类

public class QqMusic implements Plugin {
    @Override
    public void load() {
        System.out.println("qq音乐正在安装中");
    }

    @Override
    public void unLoad() {
        System.out.println("qq音乐正在卸载中");
    }
}

主程序

public class MasterManager {

    public void run(Plugin plugin){
        plugin.load();
    }

    public void remove(Plugin plugin){
        plugin.unLoad();
    }
}

测试类

public class Test {
    public static void main(String[] args) {
        MasterManager manager = new MasterManager();
        Plugin qqMusic = new QqMusic();
        Plugin qqGame = new QqGame();
        manager.run(qqGame);
        manager.remove(qqGame);
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/192961.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!