接口
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