黑马day11 装饰类

如果要修该一个类中的某个方法一共有三种方法:继承,写一个装饰类,动态代理

这里我主要介绍装饰类:

1.写一个interface Animal

package com.itheima.pool;

public interface Animal {

public void eat();

public void bite();

}

2.写一个Dog类继承Animal接口:

package com.itheima.pool;

public class Dog implements Animal{

public void eat(){

System.out.println("dog is eatting...");

}

public void bite(){

System.out.println("dog is bitting...");

}

}

3.写一个装饰类DecorateDog类同时也继承和Dog同样的接口:

在这个类中提供了一个构造方法,有一个Animal的接口参数,为了是在new DecorateDog的时候传入Dog对象....相当于多态

package com.itheima.pool;

public class DecorateDog implements Animal{

private Animal ani=null;

public DecorateDog(Animal ani){

this.ani=ani;

}

@Override

public void eat() {

ani.eat();

}

@Override

public void bite() {

System.out.println("dog is mie mie....");

}

}

4.写一个测试类DogTest

package com.itheima.pool;

public class DogTest {

public static void main(String[] args) {

Dog dog= new Dog();

Animal ani=new DecorateDog(dog);

ani.bite();

}

}

5.运营结果:

结果运行的是mie mie...这是因为调用了装饰类中被修改的方法。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-29 03:39:39

黑马day11 装饰类的相关文章

BufferedReader子类LineNumberReader装饰类的简单介绍

个人感觉这个类其实没什么特殊的功能,只有很少的时候会使用到其中的功能其中有这么两个多出来的功能 setLineNumber public void setLineNumber(int lineNumber) 设置当前行号. 参数: lineNumber - 指定行号的 int 值 另请参见: getLineNumber() getLineNumber public int getLineNumber() 获得当前行号. 返回: 当前行号 另请参见: setLineNumber(int) 那么我们

设计一个串口装饰类(1)

团队正在开发一个仪器控制软件的框架,希望该框架能兼容/容忍一些硬件的变换,以及灵活定制建立在该硬件平台之上的工作流.目标仪器使用了很多的串口通信(Serial Port),所以大家觉得应该设计/封装一个统一的串口类来管理串口通信的一致性.就我个人的意见来说,我不是建议在System.IO.Port.SerialPort上再做封装的.串口通信逻辑很简单,基本就是I/O.该类已经提供了同步阻塞模型.基于事件的异步模型,各种I/O快捷方法,所以不认为封装该类可以获得什么更多好处.但是面对框架的 一些其

大气智能家居家具装修装饰类企业通用网站织梦模板【dedecms模板】

模板名称:大气智能家居家具装修装饰类企业通用网站织梦模板模板介绍:织梦最新内核开发的模板,适合智能家居家具企业,也可以通用装修行业等企业使用,页面简洁简单,容易管理,DEDE5.5内核以上都可以使用:附带测试数据! 模板特点:1:智能家居家具展示公司模板,代码简洁,风格大气简单,页面干净.2:首页带炫酷的幻灯片,产品展示,新闻展示.3:网站内容都能在后台修改,后台简单易学.4:后台直接修改联系方式.地址.版权信息,网站内容等,修改更加方便. 使用程序:织梦DEDECMS5.5以上版本都可以使用.

Java基础之装饰类

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.ios培训..Net培训</a>.期待与您交流!------ Java基础之装饰类:简介:首先他是一种设计模式属于23种设计模式之一,英文叫Decorator Pattern.又叫装饰者模式.装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来

JAVA之IO技术自定义装饰类MybufferedReader

package ioTest.io2; import java.io.FileReader; import java.io.IOException; /* * 自定义的BufferedReader类 * MyBufferedReaderDemo:也是为了提高对流的操作性能. * 所以构造函数中应该将流传入 * * --------拓展:装饰设计模式 * 装饰设计模式是28种设计模式之一.目的是为了增强功能. * 将被增强的类A->增强类B * 将A的对象做为参数,传递给B,让B类对A类进行增强.

JAVA设计模式-装饰设计模式-继承体系的由来和装饰类的优化

首先看一下我们设计类的过程: 专门用于读取数据的类 MyReader l--MyTextReader:根据不同的功能会不断延伸很多子类 l--MyMeidaReader l--MyDataReader l--.......... 为了提高以上子类的工作效率,需要加入缓冲区技术.所以又会出现下面的类的继承体系. (体系1) MyReader l--MyTextReader:根据不同的功能会不断延伸很多子类 l--MyBufferedTextReader l--MyMeidaReader l--My

黑马程序员——黑马基础——File类,打印流

 黑马程序员--黑马基础--File类,打印流 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一,File类 用来将文件或者文件夹封装成对象 方便对文件与文件夹的属性信息进行操作. File对象可以作为参数传递给流的构造函数. File类常见方法: 1,创建. boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false. 和输出流不一样,输出流对象一建立创建文件.而且文件已经存在,

Python入门之python装饰器的4种类型:函数装饰函数、函数装饰类、类装饰函数、类装饰类

一:函数装饰函数 def wrapFun(func): def inner(a, b): print('function name:', func.__name__) r = func(a, b) return r return inner @wrapFun def myadd(a, b): return a + b print(myadd(2, 3)) 二:函数装饰类 def wrapClass(cls): def inner(a): print('class name:', cls.__na

黑马day11 动态代理&amp;模拟一个数据库连接池

数据库连接池:说白了就是在一个池子中(容器)中放了很多的数据库连接,当用户需要的时候就从中取出来一个用,用完了就放回连接池中. 优点:极大的提高了数据库的效率. 对于自定义的数据库连接池我们使用一个LinkedList做数据库连接池.这个集合的特点是增删快,查询慢. 自定义一个数据库连接池的步骤: 1.自定义一个类实现DataSource接口. 2.定义一个List<Connection> list=new LinkedList<Connection>();存放数据库连接. 3.初