今天学习类与对象。先大致解释一下类与对象的含义。
对象:object 有物体这一概念,一切皆对象(物体),对象由静态的属性和动态的行为组成。
比如说水杯:
水杯的静态属性:材质,容量,质量,颜色
动态的行为:装水,被用来喝水
类:一组具有相同属性和行为的对象的抽象。
杯子类: 水杯 牙杯 保温杯
车类:自行车 汽车 溜溜车
今天我们通过设计一个坐标类来实现类的设计:
案例:设计坐标类;
题目要求:
设计坐标点的类,具有横纵坐标两个属性
具有初始化和计算两个点之间距离的方法。
解题思路:
1.创建一个Point类
2.定义point类的变量 坐标x , 坐标y
3.构造初始化方法
4.计算两个点到点的距离 (d = √(x1-x2)²+(y1-y2)²)
程序代码:
Point类
1 public class Point { 2 private double x; //成员变量 3 private double y; 4 5 /** 6 * 初始化方法,调用时用来传入横纵坐标的值。 7 * @param x 横坐标 8 * @param y 纵坐标 9 */ 10 public void init(double x,double y){ 11 this.x = x; 12 this.y = y; 13 } 14 15 /** 16 * @param p 计算距离的两个点之一(因为这个类自己本身就是一个坐标,所以调用 类自己的距离函数 的时候,只需要加入要比较的坐标即可) 17 * @return 距离 18 */ 19 public double distance(Point p){ 20 return Math.sqrt(Math.pow((p.x-this.x),2)+Math.pow((p.y-this.y),2)); // 当前对象 p1.distance(p2)) this 表示的是 p1 21 } 22 23 /** 24 * 输出坐标信息的函数(这个函数是拿来说明 this表示的是 自身 所代表的坐标 ) 25 * @param p 坐标 26 */ 27 public void print(Point p ){ 28 System.out.println("this.x 为:"+this.x + ". this.y 为:"+this.y); 29 System.out.println("p.x 为:"+p.x + "p.y 为:" +p.y); 30 } 31 }
测试代码:
Test类
1 public class Test { 2 public static void main(String[] args) { 3 Point p1 = new Point(); 4 Point p2 = new Point(); 5 6 p1.init(3,4); 7 p2.init(0,0); 8 9 p1.print(p2); 10 System.out.println("验证两点之间距离:"+p1.distance(p2)); 11 } 12 }
有时候分不清this表示的到底是谁的值,编译器也为我们提供了方便。
当你双击this.x 的 x 的时候,发现跟类自身变量是一个。说明this表示的是类自己的x。
而白色的x则表示 形式参数( double x) 的X。
运行结果:
测试代码中我们求的是 p1.print(p2); 我们是用p1对象调用的函数,p1对象本身的坐标是(3,4)
这就说明了this的确是 表示 对象本身。
实验心得:
今天学会了使用和构造函数,代码要保持规范。
命名是要遵守。 类名首字母要大写,变量小写,final常量全部大写,方法函数命名遵循驼峰命名法。
this 表示的对象本身,这个概念要理解,后面还会有新的名词,一不小心就会搞混乱。
如果你在这篇文章学到了东西,我会很开心。