Thinking in Java 4th chap7笔记-复用类(四)

2014-11-24 11:10:34 · 作者: · 浏览: 5
or landon
*
*/
class Circle extends Shape
{
public Circle(int i)
{
super(i);
out.println("Drawing Circle");
}
@Override
void dispose()
{
out.println("Erasing Circle");
super.dispose();
}
}
/**
*
* Triangle,继承Shape
*

构造的时候,首先调用了基类的构造函数;dispose的时候,首先调用自己的方法,最后调用基类的dispose方法

*
* @author landon
*
*/
class Triangle extends Shape
{
public Triangle(int i)
{
super(i);
out.println("Drawing Triangle");
}
@Override
void dispose()
{
out.println("Erasing Triangle");
super.dispose();
}
}
/**
*
* Line,继承Shape
*

构造的时候,首先调用了基类的构造函数;dispose的时候,首先调用自己的方法,最后调用基类的dispose方法

*
* @author Administrator
*
*/
class Line extends Shape
{
//线的开始和结束点
private int start;
private int end;
public Line(int start,int end)
{
super(start);
this.start = start;
this.end = end;
out.println("Drawing line: " + this.start + " ," + this.end);
}
@Override
void dispose()
{
out.println("Erasing line: " + this.start + " ," + this.end);
super.dispose();
}
}
package com.book.chap7.reuse;
/**
*
*final参数用法
*

参数列表中以声明的方式将参数指明为final,无法在方法中更改参数应用所指向的对象

*
*@author landon
*@since JDK1.6
*@version 1.0 2012-4-23
*
*/
public class FinalArguments
{
void with(final Gizmo g)
{
//The final local variable g cannot be assigned. It must be blank and not using a compound assignment,报错,g是final的
//g = new Gizmo();
}
void without(Gizmo g)
{
g = new Gizmo();//ok,g is not final
g.spin();
}
//The final local variable i cannot be assigned. It must be blank and not using a compound assignment,报错,i is final,不能改变,can't change
void f(final int i)
{
//i++;
}
int g(final int i)
{
return i + 1;//基本类型只能读取
}
}
class Gizmo
{
public void spin()
{
}
}
package com.book.chap7.reuse;
import java.util.Random;
/**
*
*测试Final数据的用法
*
*@author landon
*@since JDK1.6
*@version 1.0 2012-4-18
*
*/
public class FinalData
{
private static Random rand = new Random(24);
private String id;
public FinalData(String id)
{
this.id = id;
}
//下面这两个定义属于编译期常量
private final int valueOne = 9;
private static final int VALUE_TWO = 99;
//典型的常量,public
public static final int VALUE_THREE = 39;
//不能成为编译器常量,因为数据是运行时随机获取
private final int i4 = rand.nextInt(20);
static final int INT_5 = rand.nextInt(20);
private Value v1 = new Value(3);
//final 引用
private final Value v2 = new Value(33);
private static final Value VALUE_3 = new Value(44);
//final数组
private final int[] a = {1,2,3,4,5,6};
@Override
public String toString()
{
return id + ": " + " i4=" + i4 + ",INT_5=" + INT_5;
}
public static void main(Stringargs)
{
//因为是在当前类,所以fd1,fd2当然可以访问所有private变量;
//因为FinalData就是当前类,所以当然可以访问;如果FinalDa