20200726 千锤百炼软工人第二十一天

今天学了JAVA的克隆部分

克隆分为浅克隆和深克隆

个人理解浅克隆就是只克隆此对象的那些不是引用的属性和方法

而那些被引用的属性和方法

会让克隆产生的那个对象也引用那些属性和方法

着部分两者是共同引用的

而不是另外开辟的一部分内存来存储的信息

而深克隆就是另外开辟一部分内存来存储那些被引用的属性和方法

其次写了一个小小的继承的程序

是一个点类和圆类的程序

在此放上代码和截图

点类

package a20200725;
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\n");
 }
 point(){
  this.x=0;
  this.y=0;
  System.out.print("Point Constructor run\n");
 }
 point(point p){
  this.x=p.x;
  this.y=p.y;
  System.out.print("Point CopyConstructor run\n");
 }
 public void finalize() {
  System.out.print("Point Destructor run\n");
 }
 public void setX(double x) {
  this.x=x;
 }
 public void setY(double y) {
  this.y=y;
 }
 public double getX() {
  return this.x;
 }
 public double getY() {
  return this.y;
 }
 public void show() {
  System.out.print("("+this.x+","+this.y+")\n");
 }
 public double area() {
  return 0;
 }
}
圆类
package a20200725;
public class Circle extends point {
 private 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\n");
 }
 Circle(Circle c){
  this.setX(c.getX());
  this.setY(c.getY());
  this.radius=c.radius;
  System.out.print("Circle CopyConstructor run\n");
 }
 Circle(){
  this.setX(0);
  this.setY(0);
  this.radius=0;
  System.out.print("Circle Constructor run\n");
 }
 public void finalize() {
  System.out.print("Circle Destructor run\n");
 }
 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+"\n");
 }
}
主函数
package a20200725;
import  java.util.Scanner;
public class main {
 public static void main(String[] arg) {
  double r;
  Scanner R = new Scanner(System.in);
  r = R.nextDouble();
  Circle c1 = new Circle(1,2,4);
  Circle c2 = new Circle();
  Circle c3 = new Circle(c1);
  c1.show();
  System.out.print("\nArea="+c1.area()+"\nCircumference="+c1.circumference()+"\n");
  c2.show();
  System.out.print("\nArea="+c2.area()+"\nCircumference="+c2.circumference()+"\n");
  c3.setRadius(r);
  c3.show();
  System.out.print("\nArea="+c3.area()+"\nCircumference="+c3.circumference()+"\n");
  c1=null;
  c2=null;
  c3=null;
  R=null;
  System.gc();
 }
}
截图

猜你喜欢

转载自www.cnblogs.com/huangmouren233/p/13381421.html