Superclass og subclass...
jeg har følgende kode(3 klasser):public class Point {
protected int x,y;
public Point() {
setPoint(0,0);
System.out.println(\"Point constructor: \" + toString());
}
public Point(int a, int b) {
setPoint(a,b);
System.out.println(\"Point constructor: \" + toString());
}
protected void finalize() throws Throwable {
System.out.println(\"Point finalizer: \" + toString());
super.finalize();
}
public void setPoint(int a, int b) {
x=a;
y=b;
}
public int getX() {return x;}
public int getY() {return y;}
public String toString() {return \"[\" + x + \", \" + y + \"]\";}
}
public class Circle extends Point{
protected double radius;
public Circle() {
setRadius(0);
System.out.println(\"Circle constructor: \" + toString());
}
public Circle(double r, int a, int b) {
super( a, b );
setRadius(r);
System.out.println(\"Circle constructor: \" + toString());
}
protected void finalize() throws Throwable {
System.out.println(\"Circle finalizer: \" + toString());
super.finalize();
}
public void setRadius(double r) {
radius=(r >= 0? r : 0);
}
public double getRadius() {return radius;}
public double area() {return Math.PI * radius * radius;}
public String toString() {return \"Center = \" + super.toString() + \"; Radius = \" + radius;}
}
import java.awt.Graphics;
import java.applet.Applet;
public class Test extends Applet {
private Circle circle1, circle2;
public void init() {
circle1 = new Circle(4.5, 72, 29);
circle2 = new Circle(10, 5, 5);
}
public void start() {
circle1 = null;
circle2 = null;
System.gc();
}
public void paint(Graphics g) {
g.drawString(\"See command in console\",25,25);
}
}
Outputtet fra dette er:
Point constructor: Center = [72, 29]; Radius = 0.0
Circle constructor: Center = [72, 29]; Radius = 4.5
Point constructor: Center = [5, 5]; Radius = 0.0
Circle constructor: Center = [5, 5]; Radius = 10.0
Circle finalizer: Center = [72, 29]; Radius = 4.5
Point finalizer: Center = [72, 29]; Radius = 4.5
Circle finalizer: Center = [5, 5]; Radius = 10.0
Point finalizer: Center = [5, 5]; Radius = 10.0
Hvordan kan det være at Radius bliver printet ud når konstruktor og finalizer i point bliver eksekveret???? og hvad refererer super.finalize() i point finalizer motoden til????
