《Java4android》视频学习笔记——面向对象的应用(一)

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

有一台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();
}

}
}

至此完成

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

时间: 2024-10-16 14:31:01

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

大话设计模式学习笔记——面向对象基础

前言 好记性不如烂"笔头"系列--大话设计模式学习笔记 目录 面向对象基础 面向对象基础 什么是类与实例 一切事物皆为对象,即所有的东西老师对象,对象就是可以看到.感觉到.听到.触摸到.尝到.或闻到的东西.准确地说,对象是一个自包含的实体,用一组可识别的特性和行为来标识.面向对象编程,英文叫 Object-Oriented Programming,其实就是针对对象来进行编程的意思.类就是具有相同属性和功能的对象的抽象集合.实例就是一个真实的对象.比如我们属于'人'类,而个人就是'人'类

韩顺平视频学习笔记-简易qq

1 package myclient; 2 3 import java.net.*; 4 import java.util.Date; 5 import java.text.SimpleDateFormat; 6 import java.awt.event.ActionEvent; 7 import java.awt.event.ActionListener; 8 import java.io.*; 9 import java.awt.*; 10 11 import javax.swing.*;

JavaScript高级程序设计学习笔记--面向对象程序设计

工厂模式 虽然Object构造函数或对象字面量都可以用来创建单个对象,但这些方式有个明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码.为解决这个问题,人们开始使用 工厂模式的一种变体. function createPerson(name,age,job){ var o=new Object(); o.name=name; o.age=age; o.job=job; o.sayName=function(){ alert(this.name); }; return o; } var

[学习笔记]面向对象开发中的一些思想和原则

摘自<Java与模式>作者阎宏 面向对象的可复用设计的第一块基石:开闭原则(一个软件实体应当对扩展开放,对修改关闭) "开-闭"原则的手段和工具: 1)里氏代换原则:任何基类出现的地方,子类一定可以出现: 2)依赖倒转原则:要依赖于抽象,不要依赖于实现: 3)合成\聚合复用原则:要尽量使用合成\聚合,而不是继承关系达到复用的目的: 4)迪米特法则:一个软件实体应该与尽可能少的其它实体发生相互作用: 5)接口隔离原则:应当为客户端提供尽可能小的单独的接口,而不要提供大的总接口

Spring视频学习笔记(二)

Spring视频学习笔记(二) XML配置里的Bean自动装配(三个来测试实现) /** * Person类 * */ public class Person { private String name; private Address address; private Car car; public String getName() { return name; } public void setName(String name) { this.name = name; } public Ad

老男孩视频第二部视频学习笔记(第二部)之一:命令(1)

命令:chkconfig  cat ls tail ln find wc tar cut grep egrep 一.如何过滤出已知当前目录下的所有一级目录 如何区分目录和文件:   1.利用颜色(这个依赖与CRT等工具)   2.利用 开头字母 · ls –l | grep ^d (正则表达式中一个字符 在[]中是非,在[]外面就是以什么开头) · ls –lF | grep / · ls –lF | grep /$  小结: 1.通过ls –l 以长格式显示文件属性,然后过滤以d开关的行,就是

马哥教育视频学习笔记-shell脚本完成磁盘分区格式化

马哥教育视频学习笔记-shell脚本完成磁盘分区格式化-http://edu.51cto.com/lesson/id-28201.html 以下是脚本内容,内容比较简单,不做详解 在Linux上准备一块空闲的磁盘即可,如何分区可以在脚本内改下 #!/bin/bash # echo "Initial a disk..." echo -e "\033[31mWarning: \033[0m " #开始的说明信息,其中Warning以红色字体显示 fdisk -l 2&g

2015 IOS 学习笔记 面向对象 初始化方法 ——蓝懿教育

今天学习了面向对象以及初始化方法,这个在实际应用中比较重要,也比较抽象,所以要具体在实例中才能理解. ————————面向对象有三大特性—————— 一.封装 封装是对象和类概念的主要特性.它是隐藏内部实现,稳定外部接口,可以看作是“包装”.封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. 好处:使用更简单变量更安全可以隐藏内部实现细节开发速度加快 OC中一个类可以继承另一个类,被继承的类成为超类(superclass),继承的

私房库视频学习笔记-小清新BBS系统开发技术归纳

自己一直在学习PHP开发,前一段时间在51cto上看到私房库孙胜利老师的视频,下载了他的小清新BBS系统开发视频学习.现在把里面的好的运用收集到这儿. 在看了这套视频后先了解整个web项目开发的过程. 公共配置参数: <?php date_default_timezone_set('Asia/Shanghai');//设置时区session_start();header('Content-type:text/html;charset=utf-8');if(version_compare(PHP_