20200730 千锤百炼软工人第二十五天

今天完成了一个程序

这个程序第一次感受了内部类的运用

以及它的逻辑重要性

其次还有学习了接口的一部分内容

在此附上代码和运行截图

package a20200730;
public class Point {
 private double x;
 private double y;
 Point(double x,double y){
  this.x=x;
  this.y=y;
  System.out.print("Point Constructor run ");
 }
 Point(){
  this.x=0;
  this.y=0;
  System.out.print("Point Constructor run ");
 }
 Point(Point p){
  this.x=p.x;
  this.y=p.y;
  System.out.print("Point CopyConstructor run ");
 }
 public void finalize() {
  System.out.print("Point Destructor run ");
 }
 public void setX(double x) {
  this.x=x;
 }
 public void setY(double y) {
  this.y=y;
 }
 public void setX() {
  this.x=0;
 }
 public void setY() {
  this.y=0;
 }
 public double getX() {
  return this.x;
 }
 public double getY() {
  return this.y;
 }
 public void show() {
  System.out.print("("+this.x+","+this.y+")");
 }
 public double area() {
  return 0;
 }
}

圆类

package a20200730;
public class Circle extends Point {
 public static double PI=3.14159;
 private double radius;
 Circle(double x,double y,double r){
  this.setX(x);
  this.setY(y);
  this.radius=r;
  System.out.print("Circle Constructor run ");
 }
 Circle(Circle c){
  this.setX(c.getX());
  this.setY(c.getY());
  this.radius=c.radius;
  System.out.print("Circle CopyConstructor run ");
 }
 Circle(){
  this.setX(0);
  this.setY(0);
  this.radius=0;
  System.out.print("Circle Constructor run ");
 }
 public void finalize() {
  System.out.print("Circle Destructor run ");
 }
 public void setRadius(double r) {
  this.radius=r;
 }
 public double getRadius() {
  return this.radius;
 }
 public double circumference() {
  return this.radius*2*PI;
 }
 public double area() {
  return this.radius*this.radius*PI;
 }
 public void show() {
  System.out.print("("+this.getX()+","+this.getY()+"),Radius="+this.radius);
 }
}

球类

package a20200730;
public class Sphere extends Circle {
 private class point extends Point{
  
 }
 private class circle extends Circle{
  
 }
 private point p = new point();
 private circle c = new circle();
 Sphere(double x,double y,double r){
  c.setX(x);
  c.setY(y);
  c.setRadius(r);
  System.out.print("Sphere Destructor run ");
 }
 Sphere(Sphere a){
  this.c.setX(a.c.getX());
  this.c.setY(a.c.getY());
  this.c.setRadius(a.c.getRadius());
  System.out.print("Sphere CopyDestructor run ");
 }
 Sphere(){
  c.setX();
  c.setY();
  c.setRadius(0);
  System.out.print("Sphere Constructor run ");
 }
 public void finalize() {
  System.out.print("Sphere Destructor run ");
 }
 public double volume() {
  return c.getRadius()*c.getRadius()*c.getRadius()*c.PI*4/3;
 }
 public double circumference() {
  return c.circumference();
 }
 public double area() {
  return c.getRadius()*c.getRadius()*c.PI*4;
 }
 public double area(Sphere s) {
  return s.c.area();
  }
 public void setRadius(double r) {
  this.c.setRadius(r);
 }
 public void show() {
  this.c.show();
 }
}
主函数

package a20200730;
import java.util.Scanner;
public class main {
 public static void main(String[] arg) {
  double r;
  Scanner r1 = new Scanner(System.in);
  r = r1.nextDouble();
  Sphere s1 = new Sphere(1,2,4);
  Sphere s2 = new Sphere(s1);
  s1.show();
  System.out.print(" Area="+s1.area()+" Volume="+s1.volume()+" ");
  s2.setRadius(r);
  s2.show();
  System.out.print(" Area="+s2.area(s2)+" Circumference"+s2.circumference()+" ");
  s1 = null;
  s2=null;
  System.gc();
 }
 
}
运行截图
原文地址:https://www.cnblogs.com/huangmouren233/p/13405974.html