interface思考练习一
参考了这篇文章,博主超级优秀,看他的最好,我只是写了点自己看他的博文学到的东西。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思考练习一的更多相关文章
- 关于 "java中常量定义在interface中好还是定义在class中好" 的一些思考
原文链接 http://blog.csdn.net/voo00oov/article/details/50433672 java中interface中定义变量都是"public static ...
- 对接口(interface)的思考
接口,java中用关键字interface定义.今天学习java基础API时,发现一个特点:每个包中都定义了一堆的接口,感觉有马克思主义中提到的“上层建筑”的味道.接口就是为需要实现的功能定一个基调, ...
- 面试题思考:interface和abstract的区别
抽象类(abstract) 含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象. 含有abstract方法的类必须定义为abstract class,abstra ...
- 如何设计一门语言(七)——闭包、lambda和interface
人们都很喜欢讨论闭包这个概念.其实这个概念对于写代码来讲一点用都没有,写代码只需要掌握好lambda表达式和class+interface的语义就行了.基本上只有在写编译器和虚拟机的时候才需要管什么是 ...
- 【Go入门教程6】interface(interface类型、interface值、空interface{}、嵌入interface、反射)
interface Go语言里面设计最精妙的应该算interface,它让面向对象,内容组织实现非常的方便,当你看完这一章,你就会被interface的巧妙设计所折服. 什么是interface 简单 ...
- [书目20160612]思考软件,创新设计——A段架构师的思考技术
高焕堂:在校时期主修统计学和信息管理,将近40年软件开发生涯.工作于亚洲和欧美各地区,专精于商业策略思考和系统架构设计.近年来,热衷于<it+设计>教育顾问和产品开发. 第1章 商业思维 ...
- Go语言interface详解
interface Go语言里面设计最精妙的应该算interface,它让面向对象,内容组织实现非常的方便,当你看完这一章,你就会被interface的巧妙设计所折服. 什么是interface 简单 ...
- objc@interface的设计哲学与设计技巧
blog.sunnyxx.com 我是前言 学习objc时,尤其是先学过其他编程语言再来看objc时,总会对objc的类声明的关键字interface感到有点奇怪,在其它面向对象的语言中通常由clas ...
- 面向对象、类与对象、成员与局部变量、封装、private、构造函数、this、static、extends、super、final、abstract、interface、多态、内部类、异常【5】
若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing ...
随机推荐
- 机器学习(一):记一次k一近邻算法的学习与Kaggle实战
本篇博客是基于以Kaggle中手写数字识别实战为目标,以KNN算法学习为驱动导向来进行讲解. 写这篇博客的原因 什么是KNN kaggle实战 优缺点及其优化方法 总结 参考文献 写这篇博客的原因 写 ...
- 笨办法学Python - 习题8-10: Printing & Printing, Printing
目录 1.习题 8: 打印,打印 2.习题 9: 打印,打印,打印 3.习题 10: 那是什么? 3.1.转义序列: 4.习题总结: 1.习题 8: 打印,打印 学习目标:继续学习 %r 的格式化输出 ...
- windows docker 安装cloudera/quickstart
最近需要写一个大数据的项目,但是公司没有测试环境,真是cao蛋,没办法,只能自己搭建一个测试环境,所以就在本地电脑装一个cloudera/quickstart,这个是一个单节点的大数据平台, 是clo ...
- Linux下lshw,lsscsi,lscpu,lsusb,lsblk硬件查看命令
Linux下lshw,lsscsi,lscpu,lsusb,lsblk硬件查看命令 2016-12-14 何敏杰 1条评论 544次浏览 注意:如有提示命令找不到command not found ...
- 2017秋软工 - 本周PSP
1. PSP 2. PSP饼状图 3. 进度条 4. 累计进度图
- Leetcode题库——3.无重复字符的最长子串
@author: ZZQ @software: PyCharm @file: lengthOfLongestSubstring.py @time: 2018/9/18 20:35 要求:给定一个字符串 ...
- android assets下rar文件解压到sd卡
参考的 http://hzy3774.iteye.com/blog/1704419 不过只能解压zip文件 最多也就能解压1M多把 ,我1.5M的可以,4M的不行 还有...之前傻逼的把raw和 ...
- 31_网络编程(Socket套接字编程)_讲义
今日内容介绍 1.网络三要素及传输协议 2.实现UDP协议的发送端和接收端 3.实现TCP协议的客户端和服务器 4.TCP上传文件案例 01网络模型 *A:网络模型 TCP/IP协议中的四层分别是应用 ...
- 关于VS2005中C#代码用F12转到定义时,总是显示从元数据的问题
元数据是:NET 程序集中的标记信息. 是在代码中选择了转到定义时候给定位的吧.因为没有找到源代码,VS通过反射读取元数据中的信息生成了那个. 解决方法: 1. 要把项目先添加到解决方案中. 2. 再 ...
- 正则化项L1和L2
本文从以下六个方面,详细阐述正则化L1和L2: 一. 正则化概述 二. 稀疏模型与特征选择 三. 正则化直观理解 四. 正则化参数选择 五. L1和L2正则化区别 六. 正则化问题讨论 一. 正则化概 ...