(1) Point2D有兩個整型成員變量x, y (分別為二維空間的X,Y方向坐標),Point2D的構造方法要實現對其成員變量x, y的初始化。
(2)Point2D有一個void型成員方法offset(int a, int b),它可以實現Point2D的平移。
(3)Point3D是Point2D的直接子類,它有有三個整型成員變量x,y,z (分別為三維空間的X,Y,Z方向坐標),Point3D有兩個構造方法:Point3D(int x,int y,int z)和Point3D(Point2D p,int z),兩者均可實現對Point3D的成員變量x, y,z的初始化。
(4)Point3D有一個void型成員方法offset(int a, int b,int c),該方法可以實現Point3D的平移。
(5)在一個測試類中的主函數main()中實例化兩個Point2D的對象p2d1,p2d2,打印出它們之間的距離,再實例化兩個Point3D的對象p3d1,p3d2,打印出他們之間的距離。
2D與3D既是獨立又是繼承關系.
主要用到:1.數學函數求兩點之間的距離2.super的用法3.類的繼承4.對象作函數參數
以下通過代碼具體分析
1 import java.lang.Math; 2 class Point2D{ 3 protected int x,y; //保護類成員主要用於繼承 4 Point2D(){ 5 } 6 Point2D(int x,int y){ //有參構造方法 7 this.x = x; 8 this.y = y; 9 } 10 public int getX(){ 11 return x; 12 } 13 public int getY(){ //方便在其他類中使用該類中的私有成員變量 14 return y; 15 } 16 public void offset(int a,int b){ //偏移后的橫縱坐標值 17 this.x += a; 18 this.y += b; 19 } 20 public void show(){ //show橫縱坐標 21 System.out.println("坐標為:["+x+ "," +y +"]"); 22 } 23 } 24 class Point3D extends Point2D{ //類的繼承 25 private int z; //第三點x 26 Point3D(){ 27 } 28 Point3D(int x,int y,int z){ //有參構造方法三點分別初始化 29 super(2,3); //調用父類的有兩個參數的構造方法 30 this.z= z; 31 } 32 public int getZ(){ 33 return z; 34 } 35 Point3D(Point2D p,int z){ //有參構造方法,以對象作形參.用p對象調用get方法以初始化繼承的私有成員變量 36 super(p.getX(),p.getY()); 37 this.z=z; 38 } 39 public void offset(int a,int b,int c){ //3D的偏移量 40 super.offset(a,b); //方法同上,調用父類的偏移方法 41 z=z+c; 42 } 43 public void show(){ //show3D坐標值 44 System.out.println("坐標為:["+x+ "," +y + "," + z +"]"); 45 } 46 } 47 public class Test3_1 { 48 public static void main(String[] args){ 49 Point2D p2d1=new Point2D(2,3); 50 Point2D p2d2=new Point2D(3,4); //初始化2D兩點p2d1,p2d2 51 double retDistance2D=distance2D(p2d1,p2d2); 52 System.out.println(retDistance2D); //輸出2D兩點之間距離 53 Point3D p3d1=new Point3D(2,3,4); 54 Point3D p3d2=new Point3D(3,4,5); 55 double retDistance3D=distance3D(p3d1,p3d2); 56 System.out.println(retDistance3D); //同上面的2D 57 } 58 public static double distance2D(Point2D p2d1,Point2D p2d2){//對象作形參 59 double distance; 60 double distanceX; 61 double distanceY; 62 distanceX=Math.pow((p2d1.getX()-p2d2.getX()),2);//(x1-x2)2=X 63 distanceY=Math.pow((p2d1.getY()-p2d2.getY()),2);//(y1-y2)2=Y 64 distance=Math.sqrt(distanceY+distanceX);//X+Y再開方 65 return distance; 66 67 } 68 public static double distance3D(Point3D p3d1,Point3D p3d2){//同2D方法一致 69 double distance; 70 double distanceX; 71 double distanceY; 72 double distanceZ; 73 distanceX=Math.pow((p3d1.getX()-p3d2.getX()),2); 74 distanceY=Math.pow((p3d1.getY()-p3d2.getY()),2); 75 distanceZ=Math.pow((p3d1.getZ()-p3d2.getZ()),2); 76 distance=Math.sqrt(distanceY+distanceX+distanceZ); 77 return distance; 78 79 } 80 }