类的封装练习

2023-11-02

封装点Point类和线段Line类。点有x,y属性,线段有起点和终点。主程序中创建2个点,用这两个点创建一条线段,输出线段的长度。要求:类封装完整,结果输出正确。

Line线段类

package zy;


class Line{//线段类
    private Point p1,p2;//两个点类
    public Line(Point p1,Point p2){//构造方法,传入两个Point类,保存到当前的Line类属性中
        this.p1 = p1;
        this.p2 = p2;
    }
    public double getLength(){//计算直线中两点的长度
        return p1.distance(p2);//通过调用Point类的distance方法,返回p1点和p2点两者的长度
    }
    public String ToString(){
        return "起点" + p1 + " 终点" + p2 ;
    }
    public Point getP1() {
        return p1;
    }

    public void setP1(Point p1) {
        this.p1 = p1;
    }

    public Point getP2() {
        return p2;
    }

    public void setP2(Point p2) {
        this.p2 = p2;
    }
}

Point点类


package zy;


public class Point {
    private int x, y;// x,y为点的坐标
    //求两点之间的距离
    public double distance(Point p1) {
        return Math.sqrt((p1.x -this.x)*(p1.x -this.x)+(p1.y-this.y)*(p1.y-this.y));
    }
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
    public int getX() {
        return x;
    }
    public void setX(int x) {
        this.x = x;
    }
    public int getY() {
        return y;
    }
    public void setY(int y) {
        this.y = y;
    }
    public Point() {
        super();
        x = y =0;
    }
    public String toString() {
        return "(" + x + "," + y + ")";
    }
}

主程序

package zy;

import java.util.Random;

public class Main{
    public static void main(String[] args) {
        Random r = new Random();//生成随机数
        //点1
        Point p1 = new Point(r.nextInt(100),r.nextInt(100));
        //点2
        Point p2 = new Point(r.nextInt(100),r.nextInt(100));
        Line line = new Line(p1,p2);
        System.out.println(line.ToString());//调用Line类型的方法输出点的数据
        System.out.printf("此线段的长度为:%.1f\n",line.getLength());//输出该线段中两顶点的距离,保留一位小数
    }
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类的封装练习 的相关文章

随机推荐

  • 2019完整的大数据知识体系,大数据学习路线图

    任何学习过程都需要一个科学合理的学习路线 才能够有条不紊的完成我们的学习目标 大数据所需学习的内容纷繁复杂 难度较大 有一个合理的大数据学习路线图帮忙理清思路就显得尤为必要 在这里还是要推荐下我自己建的大数据学习交流群 199427210
  • DL-深度学习基础

    目录 过拟合与欠拟合 降低过拟合风险的方法 降低欠拟合风险的方法 过拟合与欠拟合 欠拟合指模型不能在训练集上获得足够低的训练误差 过拟合指模型的训练误差与测试误差 泛化误差 之间差距过大 反应在评价指标上 就是模型在训练集上表现良好 但是在
  • Unity实战(11):项目非启动状态下使用代码批量替换材质

    目录 前言 配置环境 一 场景准备 二 代码演示 三 效果呈现 四 关于Resources Load 的说明 前言 本文内容为unity在编辑状态 非启动状态 下使用代码批量替换材质 该方法也适用于其他在编辑状态下对物体的操作需求 配置环境
  • Python15行代码实现免费发送手机短信,推送消息

    本文主要讲如何实现发送短信的功能 全部代码只用15行 实现的功能 通过代码定时给手机推送短信 短信内容可以自定义文字 当然你也可以去别的网站爬取每日心灵鸡汤 天气预报或其它信息进行推送 首先贴出实现的效果图 后面再分两步详细描述实现过程 第
  • Postman使用_接口导入导出

    文章目录 Postman导入数据 Collections导出数据 Environments导出数据 Postman导出所有数据 Postman导入数据 可以导入collections 接口集 Environments 环境配置 通过分享的链
  • 贪心、递归、递推以及动态规划算法的分析与对比

    算法导论 贪心算法 递归算法 动态规划算法总结 一般实际生活中我们遇到的算法分为四类 一 gt 判定性问题 二 gt 最优化问题 三 gt 构造性问题 四 gt 计算性问题 而今天所要总结的算法就是着重解决 最优化问题 算法之道 对三种算法
  • 【Java】基本类型之double(九)

    特征 double 数据类型是双精度 64 位 符合IEEE 754标准的浮点数 浮点数的默认类型为double类型 double类型同样不能表示精确的值 如货币 默认值是 0 0d 例子 double d1 123 4 精度 double
  • 重绘控件

    在Qt中 paintEvent方法是进行重绘的 只要出现以下几种情况 系统就会自动调用paintEvent方法 a 当窗口部件第一次显示时 系统会自动产生一个绘图事件 b 重新调整窗口部件大小 c 当窗口部件被其他部件遮挡 然后又再次显示出
  • 亲测微信小程序备案流程,微信小程序如何备案,微信小程序备案所需准备资料

    微信小程序为什么要备案 微信官方给出如下说明 1 若微信小程序未上架 自2023年9月1日起 微信小程序须完成备案后才可上架 2 若微信小程序已上架 请于2024年3月31日前完成备案 逾期未完成备案 平台将按照备案相关规定于2024年4月
  • [C++]生产消费模型

    生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题 生产者和消费者彼此之间不直接通讯 而通过阻塞队列来进行通讯 所以生产者生产完数据之后不用等待消费者处理 直接扔给阻塞队列 消费者不找生产者要数据 而是直接从阻塞队列里取 阻塞
  • 图解 Scrum 精要,一看就会!

    互联网时代 商业环境急剧变化 客户要求越来越高 竞争对手不断涌现 企业所处理的问题越来越易变 不确定 复杂 模糊 传统管理模式不再有效 敏捷管理模式应运而生 全球市值四大的苹果 微软 亚马逊 Facebook 都不约而同地采用了不同形式的敏
  • diffusion model

    尽管diffusion model在各类任务中都有着优秀的表现 它仍还有自己的缺点 并有诸多研究对diffusion model进行了改善 为了系统地阐明diffusion model的研究进展 我们总结了原始扩散模型的三个主要缺点 采样速
  • 计算机保研面试之专业课如何复习?

    专业课的文档我们把CSDN上的所有博客 四千多篇 经验贴字问到的专业课问题做了整理归纳 总结出来的这些面试比考的 找了很多人针对难度进行标星修订重要程度 即使是明天面试把星多的准备一下也能应付面试 付费的内容包括 1 这里把操作系统16问送
  • 三种Sigmoid的区别

    文章目录 torch sigmoid torch nn sigmoid torch nn funtional sigmoid 总结 torch sigmoid 这是一个方法 拥有Parameters以及Returns 参考官网的解释 就可以
  • bash预定义变量+read(获取键盘输入)

    程序执行的返回值 最后一次执行命令的返回状态 如果正确执行 则返回0 如果返回为非零 具体数值由命令决定 则上一条命令执行不正确 执行完一条命令之后 立马敲入echo 可得到返回值 例如 ls 执行之后 再敲入echo 可以得到0 前面说到
  • 怎么快速布局一个html页面,前端入门篇(二):利用Div + CSS快速布局页面

    在各类智能手机和平板出现前的很长一段时间里 Web网页都是通过表格进行布局的 由于表格在视觉呈现上的直观 早期很多WYSIWYG 所见即所得 的网页设计软件通常也多使用表格 但是这种布局方式有很大的局限性 比如 同一行或列的单元格在长度 宽
  • 【颜色识别】【Python+OpenCV】KNN(K近邻算法)实现魔方颜色识别【 3-1】

    更多内容参考 原创文章作者 无敌三角猫 如若转载 请注明出处 古月居 https www guyuehome com 37111 1 颜色识别 该程序利用KNN实现魔方颜色识别 特征采用RGB的颜色直方图 它可以区分白 黑 红 绿 蓝 橙色
  • SO动态链接库文件的编译和使用

    做C语言开发的都知道 在Linux环境中动态链接库以 so结尾 在Windows环境中动态链接库以 dll结尾 在讲使用之前 我先来给大家补补基础 链接库分为 静态链接库 和 动态链接库 静态链接库 a库 在 编译 的时候 库函数中函数的定
  • chrome扩展开发:[10]消息传递

    转自 http jingyan baidu com article 414eccf616e2c56b431f0a97 html 工具 原料 chrome浏览器 文本编辑器 概述 1 前面几篇文章我们介绍了browser action bac
  • 类的封装练习

    封装点Point类和线段Line类 点有x y属性 线段有起点和终点 主程序中创建2个点 用这两个点创建一条线段 输出线段的长度 要求 类封装完整 结果输出正确 Line线段类 package zy class Line 线段类 priva