今天学习类与对象。先大致解释一下类与对象的含义。
对象: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 表示的对象本身,这个概念要理解,后面还会有新的名词,一不小心就会搞混乱。
如果你在这篇文章学到了东西,我会很开心。