Thinking in Java 4th chap8笔记-多态(三)

2014-11-24 11:10:32 · 作者: · 浏览: 4
atic java.lang.System.out;
/**
*
*测试继承与清理,dispse 为清理方法
*

C++析构函数的性质

*
*@author landon
*@since JDK1.6
*@version 1.0 2012-4-28
*
*/
public class Frog extends Amphibian
{
private Characteristic c = new Characteristic("croaks");
private Description d = new Description("eat bugs");
public Frog()
{
out.println("Amphibian()");
}
@Override
protected void dispose()
{
out.println("frog dispose");
d.disopose();
c.disopose();
super.dispose();
}
public static void main(Stringargs)
{
Frog frog = new Frog();
out.println("Bye");
frog.dispose();
}
}
class Characteristic
{
private String s;
public Characteristic(String s)
{
this.s = s;
out.println("Creating Characteristic:" + s);
}
//protectd dispose
protected void disopose()
{
out.println("Disposing Characteristic:" + s);
}
}
class Description
{
private String s;
public Description(String s)
{
this.s = s;
out.println("Creating Description:" + s);
}
//protectd dispose
protected void disopose()
{
out.println("Disposing Description:" + s);
}
}
class LivingCreature
{
private Characteristic c = new Characteristic("is alive");
private Description d = new Description("basic living creature");
public LivingCreature()
{
out.println("Living Creature");
}
protected void dispose()
{
out.println("Living creature dispose");
//按照声明的相反顺序调用dispose方法
d.disopose();
c.disopose();
}
}
class Animal extends LivingCreature
{
private Characteristic c = new Characteristic("has heart");
private Description d = new Description("animal not vegetable");
public Animal()
{
out.println("Animal()");
}
//完全按照析构的形式,最后调用super.dispose
@Override
protected void dispose()
{
out.println("Animal dispose");
d.disopose();
c.disopose();
super.dispose();
}
}
class Amphibian extends LivingCreature
{
private Characteristic c = new Characteristic("can live in water");
private Description d = new Description("both water and land");
public Amphibian()
{
out.println("Amphibian()");
}
//完全按照析构的形式,最后调用super.dispose
@Override
protected void dispose()
{
out.println("Amphibian dispose");
d.disopose();
c.disopose();
super.dispose();
}
}
package com.book.chap8.multi;
/**
*
*经典的tune 多态
*
*@author landon
*@since JDK1.6
*@version 1.0 2012-4-27
*
*/
public class Music
{
public static void tune(Instrument instrument)
{
instrument.play();
}
public static void main(Stringargs)
{
Wind wind = new Wind();
tune(wind);
Brass brass = new Brass();
tune(brass);
}
}
class Instrument
{
public void play()
{
System.out.println("Instrument Play");
}