参考了这篇文章,博主超级优秀,看他的最好,我只是写了点自己看他的博文学到的东西。CSDNzdwzzu2006
接口这东西认真学是在第一次构建工程的时候,很晕菜,原来学SE时不扎实,导致东西都不会用,看得时候才说,哦?我知道。真是。。。。。。。。。。。。。。。。。。。( ̄ε(# ̄)☆╰╮( ̄▽ ̄///)打脸。
1.接口中的属性必须用 public static final 修饰,
对static,因为,一个类可以实现多个接口,如果属性冲突,这就尴尬(出错)了,所以static让这个属性永远属于接口类,不会被继承;
对final,因为,如果不是常量,那么就可以随意修改这个值,那么定义这个值也就没啥意义了(略牵强,不懂,懂了回来改)。
2.接口的作用是什么,解耦!
以 笔记本电脑 为一个类,它继承了 计算机(这里泛指符合冯诺依曼结构的计算机) 这个父类 ,同时也继承了许多接口,他可以看电影实现了dvd接口,可以听音乐,实现了mp3接口。
计算机 mycomputer=new 小米笔记本();
DVD mydvd=new 小米笔记本();可以调用小米笔记本的视频播放方法。
MP3 mymp3=new 小米笔记本();可以调用小米笔记本的音乐播放方法。
下面是个对于kill的不同描述,(抱歉我还没想到别的,只好照猫画虎)例子:
1 package zf; 2 public interface Kill { 3 public void killer(String name); 4 public void killvia(String wuqi); 5 }
1 package zf.impl; 2 3 import zf.Kill; 4 5 public class Kill1 implements Kill { 6 private String preface="江左盟的杀人宣言:"; 7 public Kill1() { 8 // TODO Auto-generated constructor stub 9 System.out.println(preface); 10 } 11 @Override 12 public void killer(String name) { 13 // TODO Auto-generated method stub 14 System.out.println("执行杀人任务的是:"+name); 15 } 16 17 @Override 18 public void killvia(String wuqi) { 19 // TODO Auto-generated method stub 20 System.out.println("用的手枪是:"+wuqi); 21 } 22 23 24 }
1 package zf.impl; 2 3 import zf.Kill; 4 5 public class Kill2 implements Kill { 6 private String preface="大理寺的杀人证词:"; 7 public Kill2() { 8 // TODO Auto-generated constructor stub 9 System.out.println(preface); 10 } 11 @Override 12 public void killer(String name) { 13 // TODO Auto-generated method stub 14 System.out.println("凶犯是:"+name); 15 } 16 17 @Override 18 public void killvia(String wuqi) { 19 // TODO Auto-generated method stub 20 System.out.println("用的手段是:"+wuqi); 21 } 22 23 }
1 package factory; 2 import java.io.FileInputStream; 3 import java.util.Properties; 4 import zf.*; 5 import zf.impl.Kill1; 6 import zf.impl.Kill2; 7 8 public class KillerFactory { 9 public static Kill getKill() { 10 return new Kill1(); 11 } 12 public static Kill getKill(String path) throws Exception { 13 Properties prop = new Properties(); 14 prop.load(new FileInputStream(path)); 15 String className = prop.getProperty("killvia"); 16 Class clazz = Class.forName("zf.impl."+className); 17 return (Kill)clazz.newInstance(); 18 } 19 20 }
1 import zf.Kill; 2 import factory.KillerFactory; 3 4 public class Test { 5 public static void main(String[] args) { 6 try { 7 Kill zf=KillerFactory.getKill("src/zf.properties"); 8 zf.killer("卓青遥"); 9 zf.killvia("天泉剑宗"); 10 } catch (Exception e) { 11 // TODO Auto-generated catch block 12 e.printStackTrace(); 13 } 14 } 15 }
zf.properties文件夹
killvia=Kill2
运行结果:
原文:http://www.cnblogs.com/carazk/p/6412069.html