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

运行结果:

interface思考练习一的更多相关文章

  1. 关于 "java中常量定义在interface中好还是定义在class中好" 的一些思考

    原文链接 http://blog.csdn.net/voo00oov/article/details/50433672 java中interface中定义变量都是"public static ...

  2. 对接口(interface)的思考

    接口,java中用关键字interface定义.今天学习java基础API时,发现一个特点:每个包中都定义了一堆的接口,感觉有马克思主义中提到的“上层建筑”的味道.接口就是为需要实现的功能定一个基调, ...

  3. 面试题思考:interface和abstract的区别

    抽象类(abstract) 含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象. 含有abstract方法的类必须定义为abstract class,abstra ...

  4. 如何设计一门语言(七)——闭包、lambda和interface

    人们都很喜欢讨论闭包这个概念.其实这个概念对于写代码来讲一点用都没有,写代码只需要掌握好lambda表达式和class+interface的语义就行了.基本上只有在写编译器和虚拟机的时候才需要管什么是 ...

  5. 【Go入门教程6】interface(interface类型、interface值、空interface{}、嵌入interface、反射)

    interface Go语言里面设计最精妙的应该算interface,它让面向对象,内容组织实现非常的方便,当你看完这一章,你就会被interface的巧妙设计所折服. 什么是interface 简单 ...

  6. [书目20160612]思考软件,创新设计——A段架构师的思考技术

    高焕堂:在校时期主修统计学和信息管理,将近40年软件开发生涯.工作于亚洲和欧美各地区,专精于商业策略思考和系统架构设计.近年来,热衷于<it+设计>教育顾问和产品开发. 第1章  商业思维 ...

  7. Go语言interface详解

    interface Go语言里面设计最精妙的应该算interface,它让面向对象,内容组织实现非常的方便,当你看完这一章,你就会被interface的巧妙设计所折服. 什么是interface 简单 ...

  8. objc@interface的设计哲学与设计技巧

    blog.sunnyxx.com 我是前言 学习objc时,尤其是先学过其他编程语言再来看objc时,总会对objc的类声明的关键字interface感到有点奇怪,在其它面向对象的语言中通常由clas ...

  9. 面向对象、类与对象、成员与局部变量、封装、private、构造函数、this、static、extends、super、final、abstract、interface、多态、内部类、异常【5】

    若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing ...

随机推荐

  1. 编译Android VNC Server

    1,在如下地址checkout源代码,我checkout的版本为0.9.7http://code.google.com/p/android-vnc-server/source/checkout 2,在 ...

  2. lastlog命令详解

    基础命令学习目录首页 原文链接:https://www.cnblogs.com/qiyebao/p/4331078.html last 显示所有用户最后登录信息(会显示系统用户) last -u 50 ...

  3. lspci命令详解

    基础命令学习目录首页 最近经常用到 lspci -nn | grep Eth 命令,需要学习下PCI总线,找到一篇文章,虽然也是转载,但写的较清晰,再次转载下. http://blog.csdn.ne ...

  4. [linux] lsyncd同步工具

    环境说明: 192.168.56.101 同步源 192.168.56.102 同步目标 操作系统centos 7 lsyncd项目地址:https://github.com/axkibe/lsync ...

  5. AbstractQueuedSynchronizer 原理分析 - 独占/共享模式(转)

    1.简介 AbstractQueuedSynchronizer (抽象队列同步器,以下简称 AQS)出现在 JDK 1.5 中,由大师 Doug Lea 所创作.AQS 是很多同步器的基础框架,比如 ...

  6. 自制session

    原理 1.面向对象中通过索引的方式访问对象,需要内部实现 __getitem__ .__delitem__.__setitem__方法 2.Tornado框架中,默认执行Handler的get/pos ...

  7. Shell 字符串处理、获取文件名和后缀名

    http://blog.csdn.net/guojin08/article/details/38704823

  8. sprint2 (第八天)

    今天课多,没做什么功能.这个sprint定的目标比较高,要实现的功能较多,可能完成不了目标值.因为GitHub下载和上传很慢,经常失败,所以这几天都没有更新GitHub,功能明天早点实现然后上传到Gi ...

  9. 第十次作业psp

    psp 进度条 博文累积折线图 代码累积折线图 psp饼状图

  10. VirtualBox安装增强功能

    一.安装依赖包 #yum install kernel-headers #yum install kernel-devel #yum install gcc* #yum install make 二. ...