《Java4android》视频学习笔记——面向对象的应用(一)
---恢复内容开始---
有一台HP打印机需要一个程序来实现开机,打印,关机这三个功能
后来又来一台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》视频学习笔记——面向对象的应用(一)的更多相关文章
- 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用
垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- 0025 Java学习笔记-面向对象-final修饰符、不可变类
final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...
- 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类
static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...
- C#学习笔记——面向对象、面向组件以及类型基础
C#学习笔记——面向对象.面向组件以及类型基础 目录 一 面向对象与面向组件 二 基元类型与 new 操作 三 值类型与引用类型 四 类型转换 五 相等性与同一性 六 对象哈希码 一 面向对象与面向组 ...
- 《Java4Android》视频学习笔记——抽象类和抽象函数
抽象函数的语法特征 1.类是抽象的,对象是具体的.面向对象里面有个非常重要的特征:先抽象,后具体. 2.只有函数的定义,而没有函数体的函数叫做抽象函数. abstract void fun(); ( ...
- 《Java4Android》视频学习笔记——包和访问权限(一)
怎么打包?代码如下 package org.marsdroid; class Test{ public static void main(String args[]){ System.out.prin ...
- 《Java4Android》视频学习笔记——为什么用抽象类?
我们来举个例子,然后引出这个问题的答案: 市面上有 喷墨式打印机 和 针式打印机 这两种形式的打印机,我们需要编程来实现他们的 开机,关机以及打印. 构建父类Printer class Printer ...
- How to use the Custom Material node and create Metaballs 官方视频学习笔记
这个视频Youtube没有字幕着实蛋疼,本人英语很渣,几乎听不懂,里面有很多文档没讲的重要信息(文档讲的东西太少了). 不过学习过后你可以解锁好几个姿势.这个视频主要是教你做DistanceField ...
随机推荐
- salesforce 零基础学习(十八)WorkFlow介绍及用法
说起workflow大家肯定都不陌生,这里简单介绍一下salesforce中什么情况下使用workflow. 当你分配许多任务,定期发送电子邮件,记录修改时,可以通过自动配置workflow来完成以上 ...
- MySQL(四) 数据表的插入、更新、删除数据
序言 数据表的插入.更新.删除非常简单,但是简单的也要学习,细节决定成败. ---WH 一.插入数据 格式:INSERT INTO 表名(字段名...)VALUES(值...); 创建环境 使用per ...
- Winform实现Shp-栅格图形文件的读取与显示(外加shp转WKB格式存入oracle)附源码
前言:上学期GIS空间数据库课程设计时,老师让实现Shp-栅格图形文件的读取与显示,外加shp转WKB格式存入oracle,不使用第三方类库,花了一天时间在网上找了一些资料,实现了一个简单的栅格图形文 ...
- 找到SQL Server数据库历史增长信息
很多时候,在我们规划SQL Server数据库的空间,或向存储方面要空间时,都需要估算所需申请数据库空间的大小,估计未来最简单的办法就是看过去的趋势,这通常也是最合理的方式. 通常来讲 ...
- HTML内联元素
前面的话 用于标记段落里的文本和其他内容组的元素种类很多,本文将这些文本级元素进行简单分类,便于整理和记忆 通用容器 <span>元素是短语内容的通用行内容器,并没有任何特殊语义.可以使用 ...
- javase基础复习攻略《八》
进入第八篇,我们开始讨论JAVA的IO初步.在JAVA程序中,对数据的输入\输出操作以"流"(stream)方式进行,J2SDK提供了各种各样的"流"类,用于获 ...
- html5的感想
作为一名前端攻城尸,每天必不可少的就是要学习新的知识,直到you get it. 今天,又一次学习了html5,每一次学习都会有新的感受. 1.记得第一次学习的时候只是觉得html5多了一些新的标签, ...
- 如何删除回滚段状态为NEEDS RECOVERY的undo表空间
环境:RHEL 6.4 + Oracle 11.2.0.4 背景:备份恢复的测试库在一次不完全恢复后,没有来及做有效的全备,又一次数据库故障导致数据库无法正常open. 只能离线部分数据文件打开数据库 ...
- Android Permission中英对照
android.permission.ACCESS_CHECKIN_PROPERTIESAllows read/write access to the "properties" t ...
- JAVA之IO文件读写
IO概述: IO(Input output)流 作用:IO流用来处理设备之间的数据传输 ...