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;
}
}
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");
}
}
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();
}
}
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();
}
}
截图

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」