interface思考练习一

参考了这篇文章,博主超级优秀,看他的最好,我只是写了点自己看他的博文学到的东西。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

运行结果:

 

posted @ 2017-02-18 00:08  叶缓  阅读(244)  评论(0编辑  收藏  举报