开闭原则:对修改是封闭的,对扩展是开放的,不要违反开闭原则。

可以使用多态解决这个问题。父类的引用变量可以引用子类是对象。

写的越是抽象,越是稳定

public class printerDemo {
public static void main(String[] args) {
/*colorPrinter cp = new colorPrinter("惠普");
blackPrinter bp = new blackPrinter("联想");*/
printer p1 = new colorPrinter("惠普");
printer p2 = new blackPrinter("联想");
printer p3 = new DDDPrinter("索尼");
school sch = new school();
/*sch.setBlackPrinter(bp);
sch.setColorPrinter(cp);*/
sch.setPriner(p1);
sch.setPriner(p2);
/*cp.print("abc");
bp.print("abc");*/
p1.print("hello");
p2.print("hello");
p3.print("hello");
} } class school{
/*private colorPrinter cp = null;
private blackPrinter bp = null;*/
private printer p = null;
/*public void setColorPrinter(colorPrinter cp) {
this.cp = cp;
}
public void setBlackPrinter(blackPrinter bp) {
this.bp = bp;
}*/
public void setPriner(printer p) {
this.p = p;
}
public void print(String content) {
/*cp.print(content);
bp.print(content);*/
p.print(content);
}
} class printer{
private String brand;
public String getBrand() {
return brand;
} public printer(String brand) {
this.brand = brand;
} public void print(String content) {//重写 }
} class colorPrinter extends printer{
public colorPrinter(String brand) {
super(brand);
} public void print(String content) {
System.out.println(getBrand()+"彩色打印:"+content);
}
} class blackPrinter extends printer{
public blackPrinter(String brand) {
super(brand);
} public void print(String content) {
System.out.println(getBrand()+"黑白打印:"+content);
}
} class DDDPrinter extends printer{
public DDDPrinter(String brand) {
super(brand);
} public void print(String content) {
System.out.println(getBrand()+"3D打印:"+content);
}
}

java多态-优化上个实例的更多相关文章

  1. java多态的具体表现实例和理解

    Java的多态性 面向对象编程有三个特征,即封装.继承和多态. 封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据. 继承是为了重用父类代码,同时为实现多态性作 ...

  2. JAVA上百实例源码以及开源项目

    简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级.中级.高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情.执着,对IT的憧憬. ...

  3. JAVA上百实例源码网站

    JAVA源码包1JAVA源码包2JAVA源码包3JAVA源码包4 JAVA开源包1 JAVA开源包2 JAVA开源包3 JAVA开源包4 JAVA开源包5 JAVA开源包6 JAVA开源包7 JAVA ...

  4. 深入理解Java多态机制

    从字节码层面来看,Java中的所有方法调用,最终无外乎转换为如下几条调用指令. invokestatic: 调用静态方法. invokespecial: 调用实例构造器<init>方法,私 ...

  5. Java多态的实现机制是什么,写得非常好!

    作者:crane_practice www.cnblogs.com/crane-practice/p/3671074.html Java多态的实现机制是父类或接口定义的引用变量可以指向子类或实现类的实 ...

  6. Java基础 (上)

    基础概念与常识 Java 语言有哪些特点? 简单易学: 面向对象(封装,继承,多态): 平台无关性( Java 虚拟机实现平台无关性): 支持多线程( C++ 语言没有内置的多线程机制,因此必须调用操 ...

  7. Java 程序优化 (读书笔记)

    --From : JAVA程序性能优化 (葛一鸣,清华大学出版社,2012/10第一版) 1. java性能调优概述 1.1 性能概述 程序性能: 执行速度,内存分配,启动时间, 负载承受能力. 性能 ...

  8. Java 性能优化之 String 篇

    原文:http://www.ibm.com/developerworks/cn/java/j-lo-optmizestring/ Java 性能优化之 String 篇 String 方法用于文本分析 ...

  9. Java 多态——与C++的比较

    学习了Java和C++之后,由于长期不使用C++,而java的基础知识掌握不牢,现在已经搞不清java多态了.现在先来谈谈java多态,稍后有时间再更新C++的多态,并进行比较~ 一. Java的多态 ...

随机推荐

  1. 费了个劲的git

    终于学会了git,表示不容易,个人表示总结一下... 1.设置个人PC上的git  master路径,ok没问题,用时1min 2.从码云代码仓库克隆已写代码,也很简单,用时2min 3.将本机器内文 ...

  2. 实现MySQL数据库的实时备份

    实现MySQL数据库的实时备份 使用MySQL Replication 吴剑 2018-08-03 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian 吴剑 ht ...

  3. unity简易ui框架

    在unity项目开发中,ui模块的开发往往占据了很大一部分工作,部分游戏甚至绝大部分的工作都是在ui上,如何高效管理各种界面,这里分享一套高效易用的UI框架. 首先,我们定义一个PanelBase类, ...

  4. 微信小程序初体验

    小程序最近太火,不过相比较刚发布时,已经有点热度散去的感觉,不过这不影响我们对小程序的热情,开发之前建议通读下官网文档,附链接:https://mp.weixin.qq.com/debug/wxado ...

  5. [javaSE] 网络编程(URLConnection)

    获取URL对象,new出来,构造参数:String的路径 调用URL对象的openConnection()方法,获取URLConnection对象 调用URLConnection对象的getInput ...

  6. 撩课-Python-每天5道面试题-第5天

    一. 给定一个圆心和半径, 以及一个点坐标, 判定该点是否在圆内; 例如: 用户输入圆心: (1, 2) 半径: 2.5 测试点为(2, 2)结果: 判定测试点是在圆内 思路: 结合勾股定理, 计算测 ...

  7. Django(二):url和views

    网络通讯的本质是socket,从socket封装到MVC模式,参见另外几篇博客.本节笔记整理自Django2.0官方文档. 一.url调度器 - django.urls.path django2.0中 ...

  8. spring mybatis 关于 basepackage 和 mapperLocations 的通配符匹配实例

    SqlSessionFactoryBean mapperLocations 注意下面几点 classpath* mapperLocation 起始路径不能有 * ,如 dm* 就不行 ** list ...

  9. HTML标签类型

    标签分类: 一.块标签:块标签是指本身属性为display:block;的元素. 1.默认占一行可以设置宽高, 2.在不设置宽度的情况下,块级元素的宽度是它父级元素内容的宽度 3.在不设置高度的情况下 ...

  10. python安装后无法用cmd命令pip 装包

    出现问题: 原因:没有添加环境变量. 解决方法:将python安装目录下的Script目录添加进环境变量,其中有pip.exe,在cmd中输入pip install命令时要运行pip.exe. win ...