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 ...
随机推荐
- c++文件对齐
头文件#include <iomanip> 关键词:setw(n),std::left,std::right 实例:输出一个0-4的12*12方阵,要求数字宽度为4,居左对齐,右下角输出出 ...
- 原生JavaScript实现的贪吃蛇
github代码地址:https://github.com/McRayFE/snake 涉及到的知识点: 键盘事件 setInterval()定时器 javascript中数组的使用 碰撞的检测 of ...
- “Hello World!“”团队第七周召开的第二次会议
今天是我们团队“Hello World!”团队第七周召开的第二次会议.博客内容: 一.会议时间 二.会议地点 三.会议成员 四.会议内容 五.todo list 六.会议照片 七.燃尽图 八.代码 一 ...
- Beta版发布 - 感谢有你们
在本次Beta版开发的过程中,很感谢组长王航对我的信任,让我统筹大家的工作任务和进度,使我对项目管理有了深刻的理解. 我也要感谢邹双黛,在beta版开发中因为邹双黛的帮助,我对于文字类工作已经越来越得 ...
- Thunder-Final冲刺中间产物-2017秋-软件工程第十二次作业
Thunder-Final发布中间产物(WBS&PSP) WBS: 分解方式:按照「爱阅」阅读器的实施过程分解 使用工具:visio 2013 PSP: PSP 预期时间 Planning 计 ...
- (第十周)评论Beta发布
本人所在组:奋斗吧兄弟 按课上展示的顺序对每组进行点评: 1. 飞天小女警 项目:礼物挑选工具 相对于alpha发布时有了很大的进步.项目的界面很漂亮,这个项目的想法很新颖,我很喜欢.礼物的挑选给出 ...
- Java第二次实验20135204
一.实验过程: 1.先创建一个学号命名的文档: 2.一个百分制成绩转化为等级: 3.新建一个包,另一个测试: 4.打开UML,建模软件umbrello进行建模: 相关程序: 5.我的保存: 二.遇到的 ...
- 第二阶段每日站立会议Forth Day
昨天对于程序中的字体显示进行细化修改,使界面更美观 今天准备继续调试手机界面 遇到的问题:上几次Tomcat运行正常,今天突然出现问题,Tomcat服务可以打开,但是无法连接到数据库
- Leetcode题库——19.删除链表的倒数第 n 个节点【##】
@author: ZZQ @software: PyCharm @file: removeNthFromEnd.py @time: 2018/9/26 21:56 说明:给定一个链表,删除链表的倒数第 ...
- Pytorch相关内容
---恢复内容开始--- Pytorch中文官方文档:https://pytorch-cn.readthedocs.io/zh/latest/package_references/torch-nn P ...