参考了这篇文章,博主超级优秀,看他的最好,我只是写了点自己看他的博文学到的东西。CSDNzdwzzu2006

接口这东西认真学是在第一次构建工程的时候,很晕菜,原来学SE时不扎实,导致东西都不会用,看得时候才说,哦?我知道。真是。。。。。。。。。。。。。。。。。。。( ̄ε(# ̄)☆╰╮( ̄▽ ̄///)打脸。

1.接口中的属性必须用 public static final 修饰,

对static,因为,一个类可以实现多个接口,如果属性冲突,这就尴尬(出错)了,所以static让这个属性永远属于接口类,不会被继承;

对final,因为,如果不是常量,那么就可以随意修改这个值,那么定义这个值也就没啥意义了(略牵强,不懂,懂了回来改)。

2.接口的作用是什么,解耦!

以 笔记本电脑 为一个类,它继承了 计算机(这里泛指符合冯诺依曼结构的计算机) 这个父类 ,同时也继承了许多接口,他可以看电影实现了dvd接口,可以听音乐,实现了mp3接口。

计算机   mycomputer=new 小米笔记本();

DVD mydvd=new 小米笔记本();可以调用小米笔记本的视频播放方法。

MP3 mymp3=new 小米笔记本();可以调用小米笔记本的音乐播放方法。

下面是个对于kill的不同描述,(抱歉我还没想到别的,只好照猫画虎)例子:

 package zf;
public interface Kill {
public void killer(String name);
public void killvia(String wuqi);
}
 package zf.impl;

 import zf.Kill;

 public class Kill1 implements Kill {
private String preface="江左盟的杀人宣言:";
public Kill1() {
// TODO Auto-generated constructor stub
System.out.println(preface);
}
@Override
public void killer(String name) {
// TODO Auto-generated method stub
System.out.println("执行杀人任务的是:"+name);
} @Override
public void killvia(String wuqi) {
// TODO Auto-generated method stub
System.out.println("用的手枪是:"+wuqi);
} }
 package zf.impl;

 import zf.Kill;

 public class Kill2 implements Kill {
private String preface="大理寺的杀人证词:";
public Kill2() {
// TODO Auto-generated constructor stub
System.out.println(preface);
}
@Override
public void killer(String name) {
// TODO Auto-generated method stub
System.out.println("凶犯是:"+name);
} @Override
public void killvia(String wuqi) {
// TODO Auto-generated method stub
System.out.println("用的手段是:"+wuqi);
} }
 package factory;
import java.io.FileInputStream;
import java.util.Properties;
import zf.*;
import zf.impl.Kill1;
import zf.impl.Kill2; public class KillerFactory {
public static Kill getKill() {
return new Kill1();
}
public static Kill getKill(String path) throws Exception {
Properties prop = new Properties();
prop.load(new FileInputStream(path));
String className = prop.getProperty("killvia");
Class clazz = Class.forName("zf.impl."+className);
return (Kill)clazz.newInstance();
} }
 import zf.Kill;
import factory.KillerFactory; public class Test {
public static void main(String[] args) {
try {
Kill zf=KillerFactory.getKill("src/zf.properties");
zf.killer("卓青遥");
zf.killvia("天泉剑宗");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

zf.properties文件夹

killvia=Kill2

运行结果:

最新文章

  1. Java 使用GDAL 读写 shapefile
  2. Multi-armed Bandit Problem与增强学习的联系
  3. [教学] Firemonkey TImageList 加入原寸图片
  4. 使用 Responsive Elements 快速构建响应式网站
  5. Redis Cluster 3.0搭建与使用
  6. 获取app版本号
  7. POJ 2000
  8. java web servlet
  9. Reshaper 快捷键
  10. 数据库神器:Navicat Premium
  11. 文本框、文本编辑框、按钮——axure线框图部件库介绍
  12. RH033读书笔记(9)-Lab 10 Understanding the Configuration Tools
  13. 【Hexo】Hexo+Github构建个人博客 (五):错误集
  14. iOS9 HTTP 网络访问问题
  15. jQuery学习之旅 Item8 DOM事件操作
  16. mysql和mariadb备份工具xtrabackup和mariabackup(mariadb上版本必须用这个)
  17. java中可以对时间进行加减处理,有时候不用在sql语句中处理
  18. Mysql Binlog三种格式详细介绍
  19. Python入门 io篇
  20. SIFT算法

热门文章

  1. Linux(Contos7.5)环境搭建之JDK1.8安装(二)
  2. 微软职位内部推荐-Software Engineer II_VS
  3. [linux] ssh远程执行本地脚本
  4. c++课的圆周面积
  5. java.time 时间和简单任务
  6. jquery on 事件嵌套 事件执行多次
  7. Alpha阶段敏捷冲刺⑤
  8. 工作中常用到的Linux命令
  9. [转帖学习]Howto Shrink a Thin Provisioned Virtual Disk (VMDK)
  10. startActivityForResult()的用法(超好用啊)