知识点:构造方法、继承、方法重载、方法重写

一、

定义一个点(Point)类,用来表示三维空间中的点(有三个坐标),要求如下:

1、可以生成具有特定坐标的点对象(构造方法);

2、提供可以设置三个坐标的方法(成员方法);

3、提供可以计算改点到另一个点的距离的方法(成员方法);

代码如下:

注:文件名为TestPoint.java(主类)

public class Point{
double x,y,z; //构造方法
public Point(double _x,double _y,double _z){
x = _x;
y = _y;
z = _z;
} //可以 “设置三个坐标” 的方法
void setX(double _x){
x = _x;
}
void setY(double _y){
y = _y;
}
void setZ(double _z){
z = _z;
}
//计算 “该点距其他点(p1)平均距离的平方” 的方法
public double getDistance(point p){
return (x - p.x)*(x - p.x) + (y - p.y)*(y - p.y) + (z - p.z)*(z - p.z);
}
public class TestPoint{
public static void main(String[] args){
Point p = new Point(1.0, 2.0, 3.0); //新建对象
Point p1 = new Point(0.0, 0.0, 0.0);//新建原点对象
system.out.println(p.getDistance(p1));//调用对象p的方法(p点距p1点的距离)
}
//改变x点的坐标后重新计算p点距其他点的坐标
p.setX(5.0);
system.out.println(p.getDistance(new Point(1.0, 1.0, 1.0))); } }

二、TestCircle程序分析

1、分析: Circle c1 = new Circle(new Point(1.0,2.0), 2.0);

Circle c2 = new Circle(5.0);

//对象: x、y、圆心、半径、面积
//方法: getX、getY、setX、setY // 坐标x点、y点
class Point {
private double x;
private double y;
Point(double x1, double y1) {
x = x1;
y = y1;
}
public double getX() { return x; }
public double getY() { return y; }
public void setX(double i) { x = i; }
public void setY(double i) { y = i; }
}
//圆心、半径
class Circle {
private Point o;
private double radius;
Circle(Point p, double r) { //圆心、半径
o = p;
radius = r;
}
Circle(double r) {
o = new Point(0.0, 0.0); //圆心 为0
radius = r; //半径
} // 写一个方法,计算一个点是否在圆内
boolean contains(Point p) {
double x = p.getX() - o.getX();
double y = p.getY() - o.getY();
if(x*x + y*y > radius * radius) return false;
else return true;
} public void setO(double x, double y) {
o.setX(x);
o.setY(y);
}
public Point getO() { return o; }
public double getRadius() { return radius;}
public void setRadius(double r) { radius = r;}
//圆面积
public double area() {
return 3.14 * radius * radius;
}
} public class TestCircle {
public static void main(String args[]) {
Circle c1 = new Circle(new Point(1.0,2.0), 2.0); //圆心、半径 o = new Point(1.0,2.0) x = 1.0 y =2.0 radius = r = 2.0
Circle c2 = new Circle(5.0); // 圆心 o = new Point(0.0, 0.0) x = 0.0 y =0.0 半径 radius = r = 5.0 System.out.println("c1:("+c1.getO().getX()+","
+c1.getO().getY()+"),"+c1.getRadius()); System.out.println("c2:("+c2.getO().getX()
+","+c2.getO().getY()+"),"+c2.getRadius()); System.out.println("c1 area = "+c1.area()); //3.14 * 2.0 * 2.0
System.out.println("c1 area = "+c2.area()); //3.14 * 5.0 * 5.0 c1.setO(5,6); // o.setX(5); o.setY(6); 即:x = 5; y = 6;
c2.setRadius(9.0); //radius = r = 9.0; System.out.println("c1:("+c1.getO().getX()+","
+c1.getO().getY()+"),"+c1.getRadius()); System.out.println("c2:("+c2.getO().getX()+","
+c2.getO().getY()+"),"+c2.getRadius()); System.out.println("c1 area = "+c1.area()); //3.14 * 2.0 * 2.0
System.out.println("c1 area = "+c2.area()); //3.14 * 9.0 * 9.0 Point p1 = new Point(5.2, 6.3); // x = 5.2; y = 6.3;
System.out.println(c1.contains(p1)); //判断 p1是否在圆c1里面(对象.方法) System.out.println(c1.contains(new Point(10.0,9.0))); }
}

Java面向对象 练习(类、对象、方法)的更多相关文章

  1. Java核心基础第5篇-Java面向对象_类和对象

    Java面向对象之类和对象 一.面向对象概述 Java是完全的面向对象编程(Object Oriented Programming),简称OOP. 面向对象编程的思维方式更加符合大家的日常生活,因为我 ...

  2. 理解JAVA - 面向对象(object) - 属性,方法

    理解JAVA - 面向对象(object) - 属性,方法 多态的体现:    向上造型,父类接收子类对象:向上造型:    从父类角度看不到子类独有的方法:面向对象,人类认知世界的方式:生活中每天都 ...

  3. Java面向对象 Object类 内部类

     Java面向对象 Object类    内部类 知识概要:                 一:Object类                 二:内部类 匿名内部类的写法 1.Object O ...

  4. paip。java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型

    paip.java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型 作者Attilax 艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http ...

  5. java加载类的方法1.classloader 2.class.forName()

    java加载类的方法1.classloader 2.class.forName() 加载一个类后,是在方法去创建这个类的元信息class对象,在方法区立刻创建.在方法区创建.

  6. 全面了解python中的类,对象,方法,属性

    全面了解python中的类,对象,方法,属性 python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性( ...

  7. Java基础语法04面向对象上-类-属性-方法-可变参数-重载-递归-对象数组

    类 面向对象是一种思想,一般指将事务的属性与方法抽出总结为模板(类/class),处理事务时通过类创建/new出对象由对象的功能/方法去完成所要计算处理的事情. 面向过程:POP:以过程,步骤为主,考 ...

  8. Java面向对象(一) 类和对象

    一.软件开发进化史 摘自<从零开始学架构> 机器语言(1940年) 最早的软件开发使用的是“机器语言”,直接使用二进制码0和1来表示机器可以识别的指令和数据. 汇编语言(20世纪40年代) ...

  9. 这次齐了!Java面向对象、类的定义、对象的使用,全部帮你搞定

    概述 Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下, 使用Java语言去设计.开发计算机程序. 这里的对象泛指现实中一切事物,每种事物都具备自 ...

  10. java 获取实体类对象属性值的方法

    在java中我们要获得实体类对象的属性,一般情况是将实体类中的属性私有化,然后再对外提供get()与set()方法,然后再获取实体类对象的属性的时候先把对象new出来,再用变量名.get()的方法得到 ...

随机推荐

  1. 【Codeforces】B. Div Times Mod

    B. Div Times Mod time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  2. python总结四

    sql性能优化的几种方式: 1.查询的模糊匹配: 尽量避免在一个复杂查询里面使用like '%parm%',前面的%会导致相关列的索引无法使用,最好不要用 直接修改后台,根据输入条件,先查出符合条件的 ...

  3. GPS和LOAM的pose之间建立edge

    基于时间戳一致原理,在与PG的timestamp邻近的的两个LOAM的pose中插值出一个虚拟的LOAM pose PG' ,其timestamp = PG的timestamp. 然后GPS的pose ...

  4. Java 并发系列之七:java 阻塞队列(7个)

    1. 基本概念 2. 实现原理 3. ArrayBlockingQueue 4. LinkedBlockingQueue 5. LinkedBlockingDeque 6. PriorityBlock ...

  5. JAVA JDK安装及path环境变量配置

    JDK安装 JVM  :JAVA虚拟机 JRE :java运行环境=JVM+核心类库 JDK :JAVA开发工具包=JRE+java开发工具 java开发工具:编译工具(javac.exe) . 运行 ...

  6. 使用Redis搭建电商秒杀系统

    背景 秒杀活动是绝大部分电商选择的低价促销.推广品牌的方式.不仅可以给平台带来用户量,还可以提高平台知名度.一个好的秒杀系统,可以提高平台系统的稳定性和公平性,获得更好的用户体验,提升平台的口碑,从而 ...

  7. Leetcode 219. 存在重复元素 II

    说明: 首先,这是一道Easy题,我天!但是题意理解还是很多坑~ 题目描述: 给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j] ...

  8. 【RS】:论文《Neural Collaborative Filtering》的思路及模型框架

    [论文的思路] NCF 框架如上: 1.输入层:首先将输入的user.item表示为二值化的稀疏向量(用one-hot encoding) 2.嵌入层(embedding):将稀疏表示映射为稠密向量( ...

  9. Java里 equals 和 == 以及 hashcode

    本文探讨的是老掉牙的基础问题,先建个实体类 package com.demo.tools; public class User { private String name; public User(S ...

  10. python面试题_01

    前言 现在面试测试岗位,一般会要求熟悉一门语言(python/java),为了考验求职者的基本功,一般会出2个笔试题,这些题目一般不难,主要考察基本功.要是给你一台电脑,在编辑器里面边写边调试,没多大 ...