今天学习类与对象。先大致解释一下类与对象的含义。

对象: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),)+Math.pow((p.y-this.y),)); // 当前对象 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(,);
  7. p2.init(,);
  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 表示的对象本身,这个概念要理解,后面还会有新的名词,一不小心就会搞混乱。

如果你在这篇文章学到了东西,我会很开心。

java学习-初级入门-面向对象③-类与对象-类与对象的定义和使用1的更多相关文章

  1. java学习-初级入门-面向对象②-面向对象概述-面向对象程序设计

    我们在  面向对象①中学习了,结构化程序设计. 今天我们一起学习面向对象程序设计. 学习面向对象程序设计就要了解,在面向对象中重要的知识点. 继承  .  多态   . 抽象  . 接口 我们会在接下 ...

  2. java学习-初级入门-面向对象⑤-类与对象-类与对象的定义和使用3

    这次我们要做一个日期类Date类 主要目的是    1.  熟悉-->构造不同参数的函数  2.善于利用已有的函数!! 题目要求: Date类要求 可设定年月日 可转换为字符串,并可指定分隔符, ...

  3. java学习-初级入门-面向对象⑥-类与对象-静态static

    这次我们来学习静态(static) 知识点 1.静态方法只能调用静态变量 2.静态变量属于整个Class,会随着发生变化. 案例:定义一个自动增长的学生类. 题目要求: 定义一个学生类,除了姓名.性别 ...

  4. java学习-初级入门-面向对象④-类与对象-类与对象的定义和使用2

    我们继续学习类与对象,上一篇我们定义了  坐标类(Point), 这次我们在Point的基础上,创建一个圆类(Circle). 案例:创建一个圆类 题目要求: 计算圆的周长和面积:求判断两个圆的位置关 ...

  5. java学习-初级入门-面向对象①-面向对象概述-结构化程序设计

    为了学习面向对象程序设计,今天我们先利用面向对象以前的知识,设计一个学生类. 要求进行结构化程序设计. 学生类: Student 要求:存储学生的基本信息(姓名.性别.学历层次和年级),实现学生信息的 ...

  6. Java学习笔记之---面向对象

    Java学习笔记之---面向对象 (一)封装 (1)封装的优点 良好的封装能够减少耦合. 类内部的结构可以自由修改. 可以对成员变量进行更精确的控制. 隐藏信息,实现细节. (2)实现封装的步骤 1. ...

  7. Java学习日记基础篇(四)——类,对象之成员变量,成员方法,构造方法

    面向对象(Object Oriented) 一.面向对象杂谈 面向对象(Object Oriented),我的翻译是以物体为目标的,就是说编程的时候是建立一个物体,然后对这个物体进行操作. Java语 ...

  8. 疯狂java学习笔记之面向对象(一) - 定义类、方法、构造器

    Java面向对象 1.定义类 2.创建对象.调用方法 类和对象: 某一类对象的概念定义. 比如:人类 - 抽象出来的概念(不特指某个人) 对象 - 在类的概念下产生的一个实例,它就是一个对象了. ja ...

  9. Java精选笔记_面向对象(慨念、类和对象)

    面向对象概念 在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象. 相对于面向过程而言.是一种思想,强调的是功能的对象. 面向对象的本质:以类的方式组织代码, ...

随机推荐

  1. CSS - px、em、%

    px(像素).em.% 百分比 1. em 1.1 本元素给定字体的 font-size 值,如果元素的 font-size 为 14px ,那么 1em = 14px:如果 font-size 为 ...

  2. pikachu-搜索型注入 #手工注入

    1.搜索型注入漏洞产生的原因: 在搭建网站的时候为了方便用户搜索该网站中的资源,程序员在写网站脚本的时候加入了搜索功能,但是忽略了对搜索变量的过滤,造成了搜索型注入漏洞,又称文本框注入. 2.搜索型注 ...

  3. vultr安装kali

    前言 很多国内的主机不支持自定义安装系统,且也不方便下载国外资料:),所以需要使用vultr安装kali. 1.上传镜像 镜像地址填这个(我当时的最新版本) https://cdimage.kali. ...

  4. Java单例和多例

    背景:最近在学习韩老师的笔记时候发现不是很了解单例和多例,于是通过网上查找资料的方式去学习. 设计模式:最佳的实践,是软件开发人员在软件开发过程中面临一般解决方案,也就是开发的经验总结. 单例模式(S ...

  5. Codeforces Round #616 (Div. 2) D

    莫队的模板 struct node{ int l,r,id; }q[maxn]; int cmp(node a,node b) { ) ? a.r < b.r : a.r > b.r); ...

  6. BinaryTree(二叉树) - 再谈二叉树

    经过两天的研究,总算是完全梳理清二叉树的基本操作了,然后我又发现了一些对二叉树的新的认识. 先具体说说删除操作,前面在对二叉树的补充中,我说到了二叉树的删除操作可以有两种不同的代码编写方式(可点这里去 ...

  7. [经验] 如何将 Java 项目发布到云服务器上并可以访问

    环境: 云服务器 Linux centos7.6 1: 安装 Tomcat  (apache-tomcat-9.0.26.tar.gz) 下载压缩包 --> 通过SSH上传到云服务器 --> ...

  8. redis几种数据导出导入方式

    一.redis-dump方式 1.安装redis-dump工具 [root@172.20.0.3 ~]# yum install ruby rubygems ruby-devel -y 更改gem源 ...

  9. FastStone Capture 截图工具

    主要功能介绍 截屏 包括了全屏截取,当前活动窗口截取,截取选定区域,多边形截取和截取滚动页面等,基本上常用的都有了.特别是滚动截取,许多朋友为了这个功能,不惜安装各种重量级的截屏软件,甚至四处下载各种 ...

  10. 前端学习 之 CSS(二)

    五:继承性和层叠性 css有两大特性,即继承性和层叠性. 1. 继承性 面向对象语言都会存在继承的概念,在面向对象语言中,继承的特点:继承了父类的属性和方法.那么我们现在主要研究css,css就是在设 ...