当前位置: 代码迷 >> Eclipse >> java对象有关
  详细解决方案

java对象有关

热度:70   发布时间:2016-04-23 01:45:17.0
java对象相关
小弟的问题在程序里标出了,各位高手还不吝赐教
//主类
//通过信息输出框输出点的坐标以及圆的面积
import java.text.DecimalFormat;
import javax.swing.JOptionPane;
public class InheritanceTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Point pointRef,p;//pointRef和p是不是拥有Point的属性和方法?
Circle circleRef,c;
String output;
p=new Point(30,50);
c=new Circle(2.7,120,89);
output="Point p: "+p.toString()+"\nCircle c: "+c.toString();
pointRef=c;  //pointRef的属性和方法跟Circle一样?
output +="\n\nCircle c (via pointRef):"+pointRef.toString();
circleRef=(Circle)pointRef;  //circleRef的属性和方法跟Circle一样?
output +="\n\nCircle c (via pointRef):"+circleRef.toString();
DecimalFormat precision2=new DecimalFormat("0.00");
output += "\nArea of c (via circleRef):"+precision2.format(circleRef.area());
if(p instanceof Circle){  //这个判断语句是什么意思?
circleRef=(Circle)p;
output +="\n\ncast successful";
}
else
output +="\n\np does not refer to a Circle";
JOptionPane.showMessageDialog(null,output,"Demonstrating the \"is a\"relationship",JOptionPane.INFORMATION_MESSAGE);
System.exit(0);

}

}
//Circle的父类Point 
public class Point {
private int x,y;
public Point(int a,int b){setPoint(a,b);}
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 double area(){return 0.0;}
public String getName(){return "Point";}
}
//Circle类
public class Circle extends Point {
protected double radius;
public Circle(double r,int a,int b){
super(a,b);
setRadius(r);
}
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;}
public String getName(){return "Circle";}
}
------解决方案--------------------
属性方法一样,因为那些都是要声明对象的一个实例。p instanceof Circle 是判断p是不是Circle的一个实例。
------解决方案--------------------
Point pointRef,p;//pointRef和p是不是拥有Point的属性和方法?
在没有实例化下严格来说是没有拥有属性和方法的,但是有的编译器可以调用其方法。
pointRef=c;  //pointRef的属性和方法跟Circle一样?
典型的父类指针指向子类对象,可以调用与父类同名的方法,但实际调的是被子类覆写过的。
circleRef=(Circle)pointRef;  //circleRef的属性和方法跟Circle一样?
一样。
if(p instanceof Circle){  //这个判断语句是什么意思?
是否是该类的实例
  相关解决方案