对象的引用和实体、类与程序的基本结构

对象的引用和实体

类是体现封装的一种数据类型,类所声明的变量被称为对象。new运算符的作用就是为对象分配变量,即分配内存。对象本身负责存放引用,以确保对象可以操作分配给该对象的变量以及调用类中的方法。分配给对象的变量被习惯性称作对象的实例。

  • 避免使用空对象

    没有实体的对象称作空对象,空对象不能使用。

  • 重要结论

    一个类创建得两个对象,如果具有相同的引用,那么就具有相同的实体。

  • 垃圾收集

    周期性地检测某个实体是否已不再被任何对象所拥有,如果发现这样的实体,就释放实体占用的内存。

    Point p1=new Point(5,15)
    Point p2=new Point(8,18)
    

那么内存模型如图所示

image-20220424162410485

假如在程序中使用了如下的赋值语句:

p1=p2;

image-20220424162653932

Example4_4.java

class Point{
	int x,y;//成员变量:
	Point(int a,int b){//定义构造方法
		this.x=a;//成员变量;横纵坐标
		this.y=b;
	}
}//结束点类的定义
public class Example4_4 {
	public static void main(String[] args) {
		Point p1,p2;//声明两个点对象,引用型变量。
		p1=new Point(5,6);//创建一个点对象
		p2=new Point(12,56);
		System.out.println("p1的引用是:"+p1);
		System.out.println("p2的引用是:"+p2);
		System.out.println("p1的坐标是:("+p1.x+","+p1.y+")");
		System.out.println("p1的坐标是:("+p2.x+","+p2.y+")");
		p1=p2;
		System.out.println();
		System.out.println("执行P2赋予P1后:");
		System.out.println("p1的引用是:"+p1);
		System.out.println("p2的引用是:"+p2);
		System.out.println("p1的坐标是:("+p1.x+","+p1.y+")");
		System.out.println("p1的坐标是:("+p2.x+","+p2.y+")");
	}

}

image-20220424112913417

类与程序的基本结构

Example4_5.java

代码示例:

//定义一个矩形
public class Rect {
	double width,height;//定义矩形的属性:宽、高
	double computerArea() {//定义计算面积的方法
		return width*height;
	}
}
//定义一个梯形
public class Lader {
	double above,buttom,height;//定义梯形的属性:上底、下底、高
		double computerArea() {
		return (above+buttom)*height;
	}
}
//定义主类,用于测试
public class App {
	public static void main(String[] args) {
		Rect rect=new Rect();//声明一个矩形对象,并创建,该类是与本类不在同一个文件中。
		rect.height=2;
		rect.width=4;
		double area=rect.computerArea();
		System.out.println("矩形对象rect的面积="+area);
		Lader lader = new Lader();
		lader.above=2;
		lader.buttom=3;
		lader.height=4;
		area=lader.computerArea();
		System.out.println("梯形对象lader的面积="+area);
	}
}

运行结果:

image-20220424115839545

posted @ 2022-04-24 16:34  涂勇军  阅读(97)  评论(0编辑  收藏  举报