---恢复内容开始---

有一台HP打印机需要一个程序来实现开机,打印,关机这三个功能

class HPprinter
{
void open(){
System.out.println("Open");
}
 
 
void print(String s){
System.out.println("print-->" + s);
}
 
 
void close(){
System.out.println("Close");
}
}
class Test
{
public static void main(String args[])
{
HPprinter hp = new HPprinter();
 
 
hp.open();
hp.print("abc");
hp.close();
}
}

后来又来一台Canon打印机需要实现开机,打印,清理,关机

class Canonprinter
{
void open(){
System.out.println("Open");
}

void print(String s){
System.out.println("print-->" + s);
}

void close(){
this.clean();
System.out.println("Close");
}

void clean(){
System.out.println("Clean");
}
}

如何用同一个程序实现这两台打印机的功能呢?

class Test
{
public static void main(String args[])
{
int a = 0;

HPprinter hp = new HPprinter();
Canonprinter canon = new Canonprinter();

if(a == 1){ //注意此处需要用等于号。
hp.open();
hp.print("abc");
hp.close();
}

else if(a == 0){
        canon.open();
canon.print("123");
canon.close();
}

}
}

上述程序有很多的重复代码,要是有很多种不同的打印机加进来,改一个程序容易,改两个程序也容易,总不能每个程序改一遍的吧?其实我们完全可以把风险降到最低,解决掉这些重复代码。

建一个父类Printer

class Printer
{
void open(){
System.out.println("Open");
}

void print(String s){
System.out.println("Print-->" + s);
}

void close(){
System.out.println("Close");
}
}

让各类打印机继承

class HPprinter extends Printer
{

}

class Canonprinter extends Printer
{
void close(){
this.clean();
super.close();
}

void clean(){
System.out.println("Clean");
}
}

主函数

class Test
{
public static void main(String args[])
{
int a = 0;

HPprinter hp = new HPprinter();
Canonprinter canon = new Canonprinter();

if(a == 1){
hp.open();
hp.print("abc");
hp.close();
}

else if(a == 0){
       canon.open();
canon.print("123");
canon.close();
}

}
}

至此完成

---恢复内容结束---

《Java4android》视频学习笔记——面向对象的应用(一)的更多相关文章

  1. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

  2. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  3. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

  4. 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类

    static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...

  5. C#学习笔记——面向对象、面向组件以及类型基础

    C#学习笔记——面向对象.面向组件以及类型基础 目录 一 面向对象与面向组件 二 基元类型与 new 操作 三 值类型与引用类型 四 类型转换 五 相等性与同一性 六 对象哈希码 一 面向对象与面向组 ...

  6. 《Java4Android》视频学习笔记——抽象类和抽象函数

    抽象函数的语法特征 1.类是抽象的,对象是具体的.面向对象里面有个非常重要的特征:先抽象,后具体. 2.只有函数的定义,而没有函数体的函数叫做抽象函数. abstract void fun(); ( ...

  7. 《Java4Android》视频学习笔记——包和访问权限(一)

    怎么打包?代码如下 package org.marsdroid; class Test{ public static void main(String args[]){ System.out.prin ...

  8. 《Java4Android》视频学习笔记——为什么用抽象类?

    我们来举个例子,然后引出这个问题的答案: 市面上有 喷墨式打印机 和 针式打印机 这两种形式的打印机,我们需要编程来实现他们的 开机,关机以及打印. 构建父类Printer class Printer ...

  9. How to use the Custom Material node and create Metaballs 官方视频学习笔记

    这个视频Youtube没有字幕着实蛋疼,本人英语很渣,几乎听不懂,里面有很多文档没讲的重要信息(文档讲的东西太少了). 不过学习过后你可以解锁好几个姿势.这个视频主要是教你做DistanceField ...

随机推荐

  1. Java构造函数

    构造函数的定义: 构造函数 ,是一种特殊的方法.主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中.特别的一个类可以有多个构造函数 ,可根据其参数个 ...

  2. Java的概述以及语法

    Java的语法分为标示符和数据类型 Java的概述: 一些手打的: long l = 12345; //隐式转换 int a = (int)121234567L; //强制转换 float f =12 ...

  3. rabbitmq消息队列——"路由"

    在之前的教程中,我们创建了一个简单的日志系统.我们能够向许多交换器转发日志消息. 在本教程中,我们将添加一个功能--我们让它仅仅接收我们感兴趣的日志类别.举例:我们 实现仅将严重级别的错误日志写入磁盘 ...

  4. fir.im Weekly - 600个 Android 开源项目汇总

    本期 Weekly 收集了一些热度资源,包含 Android.iOS 开发工具与源码分享,程序员也应该了解的产品运营.设计等 Tips ,希望对你有帮助. 600个Android开源项目汇总 勤劳的 ...

  5. [转]Java并发编程:Lock

    链接: http://www.cnblogs.com/dolphin0520/p/3923167.html

  6. hibernate(八)一对多关联

    一.一对多单向关良 一对多单向关联与多对一相似 假设一个组有多个用户,即一(Group)对多(User) 需要在Group类中添加一个User类的Set集合(数据库中的用户不可能是重复的,所以要用Se ...

  7. dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算

    一.基本概念 dip        : Density independent pixels ,设备无关像素. dp        :就是dip px        : 像素 dpi       :d ...

  8. 理论到实践,A/B测试不得不直面的4个统计学问题

    有放回?无放回? 从总体中随机抽取一个容量为n的样本,当样本容量 n足够大(通常要求n ≥30)时,无论总体是否符合正态分布,样本均值都会趋于正态分布.期望和总体相同,方差为总体的1/n.这即是中心极 ...

  9. HTML5 Dashboard – 那些让你激动的 Web 技术

    HTML5 Dashboard 是一个 Mozilla 推出的项目,里面展示了最前沿的 HTML5,CSS3,JavaScript 技术.每一项技术都有简洁,在线演示以及详细的文档链接.这些技术将成为 ...

  10. J2EE修炼之四书五经[转自2004年程序员]

    J2EE修炼之四书五经 作者:彭晨阳 J2EE其实没有四书五经,因为J2EE一直如汹涌澎湃的大江,推陈出新,不断高速发展,这是一种带领我们走向未来的技术.当然,如何在这种气势如虹的潮流之中不至于迷失方 ...