方法覆盖

1、方法覆盖又被称为方法重写
2、什么时候使用方法重写?
当父类中的方法已经无法满足当前子类的业务需求;
子类有必要将父类中继承过来的方法进行重新编写;
3、代码需要满足什么条件才能构成方法覆盖?
(1)方法重写发生在具有继承关系的父子类之间;
(2)方法重写的时候:方法名相同、返回值类型相同、形参列表相同;
(3)方法重写的时候:访问权限不能更低,可以更高;【public>protect>private】
(4)方法重写的时候:抛出异常不能更多,可以更少;
4、建议方法重写的时候尽量复制粘贴!(因为容易出错,导致没有产生覆盖)
(第四点特别需要注意,我在写的时候找这个错误找了半天)
5、注意:
(1)私有方法不能继承,所以不能覆盖
(2)构造方法不能继承,所以不能覆盖
(3)静态方法不存在覆盖
(4)覆盖只针对方法,不谈属性

题目要求:

前提:先是有一个一个两点之间求距离的函数 Point2d,以此为父类派生出各个子类

1. Point3d

Point3d用于描述三维坐标点(1)增加Z坐标(2)覆盖toString()方法,输出三维坐标(3)覆盖distance()方法,计算三维坐标点之间的距离(4)定义有参数的构造方法,利用super调用父类构造方法

2. Circle

Circle用于描述二维的圆,圆可以看作是一个点和一个半径(1)增加半径(2)增加计算面积的方法(3)覆盖toString方法(4)定义有参数的构造方法,利用super调用父类构造方法

3. Line

Line用于描述平面的直线,y = k * x + b(1)增加k,b(2)覆盖toString方法(3)定义有参数的构造方法,利用super调用父类构造方法*补充:直线只要再增加一个斜率就可以了,输出的时候,要以:y=kx+b的形式输出*

4. 定义Test类,进行测试

(1)定义main方法,测试定义的类(2)定义方法:void show(Point2d point),传递不同的子类对象,在该方法中调用toString,查看输出结果。
class Point2d
{int x=0;int y=0;Point2d(){x=y=0;} Point2d(int x,int y){this.x=x;this.y=y;}public String toString(){return "(" + x +"." + y +")";}public double distance(Point2d point){int delX = x - point.x;int delY = y - point.y;return Math.sqrt(delX*delX + delY*delY);}}class Point3d extends Point2d
{int z = 0;                Point3d()      {z=0;}Point3d(int x,int y,int z){super(x,y);this.z=z;}public String toString(){return "(" + x + "," + y + "," + z+")" ;}public double distance(Point2d point){int delX = 0;int delY = 0;int delZ = 0;if(point instanceof Point3d){delX = x - point.x;delY = y - point.y;delZ = z - ((Point3d)point).z;}else {delX = x - point.x;delY = y - point.y;delZ = z;}return Math.sqrt(delX*delX+delY*delY+delZ*delZ);}
}class Circle extends Point2d
{double radius = 0.0;Circle(){radius=0.0;}Circle(int x,int y,double radius){super(x,y);this.radius = radius;}public String toString(){return "( x-" + x + ")^2 + ( y -" + y + ")^2=" + radius*radius;}public double area(){return 3.14 * radius * radius;}
}public class D {public static void main(String[] args) {Point2d p1 = new Point2d(1,1);Point2d p2 = new Point2d(2,2);System.out.println(p1.toString());System.out.println(p1.distance(p2));Point3d p3 = new Point3d(3,6,7);Point3d p4 = new Point3d(4,4,10);System.out.println(p3.toString());System.out.println (p3.distance(p1));Circle c = new Circle(2,8,9);System.out.println (c.toString());System.out.println (c.area());}
}

执行结果:

恭喜你,看到了这里:
下面是老师留给我们的小作业,接着来看吧!
3. Line

Line用于描述平面的直线,y = k * x + b(1)增加k,b(2)覆盖toString方法(3)定义有参数的构造方法,利用super调用父类构造方法*补充:直线只要再增加一个斜率就可以了,输出的时候,要以:y=kx+b的形式输出*

4,定义Test类,进行测试

(1)定义main方法,测试定义的类(2)定义方法:void show(Point2d point),传递不同的子类对象,在该方法中调用toString,查看输出结果。
class Point2d
{int x=0;int y=0;Point2d(){x=y=0;} Point2d(int x,int y){this.x=x;this.y=y;}public String toString(){return "(" + x +"." + y +")";}public double distance(Point2d point){int delX = x - point.x;int delY = y - point.y;return Math.sqrt(delX*delX + delY*delY);}
}
class Zhixian extends Point2d
{double k = 0.0;double b = 0.0;Zhixian(){k=0.0;}Zhixian(int x,int y,double k){super(x,y);this.k = k;}public double gongshi(){b = y - k*x;return b;}public String toString(){return "y" + "=" + k+"x"+ "+" +b;}
}
public class E {public static void main(String[] arg) {Zhixian L1 = new Zhixian(10,10,3.0);System.out.println(L1.gongshi());System.out.println(L1.toString());}
}

执行结果:

JAVA中方法覆盖,看这篇就够了相关推荐

  1. Java应用系统监控看这篇就够了

    Java应用系统监控看这篇就够了 文章目录 业务背景 系统监控发展历程 技术方案 日志监控技术方案 Grafana+阿里云SLS日志服务 分布式链路追踪技术方案 阿里云jaeger方案 开源框架sky ...

  2. Java中方法覆盖的基本使用

    回顾一下方法重载: 1.什么时候考虑使用方法重载overload? 答:当在一个类中,如果功能相似的话,建议将名称定义成一样,只是参数列表(个数,顺序,类型)不同,这样代码美观,且方便编程. 2.什么 ...

  3. Java 集合框架,看这篇真的够了!

    话不多说,直接上图: Java 集合,也称作容器,主要是由两大接口 (Interface) 派生出来的: Collection 和 Map 顾名思义,容器就是用来存放数据的. 那么这两大接口的不同之处 ...

  4. Java集合知识点,看这篇就够了,还有月薪3万简历模板+BAT面试题,帮你进大厂!

    Java集合知识点,猿人花了几天时间整理,还有Java超神之路脑图.月薪3万Java优秀简历模板.全网最全一线大厂Java笔试面试题.1000+本Java开发精华电子书送给大家,希望大家认真学习哦! ...

  5. tensorboard使用界面介绍以及使用方法(看这篇就够了,都有源码可以直接测试)

    0 总述 简要概述所显示的仪表板(顶部导航栏中的选项卡): Scalars显示损失和准确率指标在每个时期如何变化. 您还可以使用它来跟踪训练速度,学习率和其他标量值. Graphs 可帮助您可视化模型 ...

  6. 使用pip进行Python包的安装方法(看这篇就够了)

    首先,在cmd窗口中,用pip安装Python包,经常会出现超时的现象,主要是由于很多包都是需要从国外的网站上进行下载,所以会限速,但是如果采用国内的镜像进行下载,就会特别快,这里给出几个非常好用的方 ...

  7. Java String,看这篇就够了

    String,是Java中最重要的类.这句肯定的推断不是Java之父詹姆斯·高斯林说的,而是沉默王二说的,因此你不必怀疑它的准确性. 关于字符串,有很多的面试题,但我总觉得理论知识绕来绕去没多大意思. ...

  8. Java中方法的学习

    目录 概述 第一章:Java中的方法是什么意思 (1)Java中方法的定义 ①方法的修饰符 ②方法的返回值类型 ③方法名 ④方法的参数列表 ⑤方法体 第二章:方法的重载和重写 (1)方法的重载 (2) ...

  9. Java中的映射Map - 入门篇

    前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的映射Map - 入门篇>,希望对大家有帮助,谢谢 简介 前面介绍了集合List,这里开始简单介绍下映射Map,相关类如下图所示 正 ...

最新文章

  1. python中scrapy框架_简述python Scrapy框架
  2. jquery 替换括号里面内容_EXCEL单元格里提取、删除或替换部分内容
  3. java advance_JavaAdvance
  4. python接口测试_Python接口自动化测试框架实战开发(一)
  5. MATLAB求音频信号特征的自定义函数.md
  6. 电子商务应用课程知识整理 第一章-电子商务概述与类型
  7. windows程序设计笔记(10)
  8. 与其他的PDF编辑器相比,迅捷PDF编辑器实在好用太多了
  9. Centos安装显卡驱动
  10. 代码要写注释吗?写你就输了
  11. L2-016 愿天下有情人都是失散多年的兄妹
  12. 每天记忆五个词根之五
  13. 第十六章:开发工具-compileall:字节编译源文件-编译单个文件
  14. yxc_第一章 基础算法(一)
  15. Mybatis 报The error occurred while handling results
  16. 心法利器[78] | 端到端任务的拆解设计
  17. endnote 教程
  18. Conhash 和 Maglev hash对比
  19. 据实而用 浅析会议摄像机的选购
  20. Leveraging Stereo-Camera Data for Real-Time Dynamic Obstacle Detection and Tracking

热门文章

  1. GM8775C 型 DSI 转双通道 LVDS 发送器
  2. 流感传染(C程序设计进阶第2周)
  3. 仿交易猫 转转闲鱼源码 多版本合一
  4. 聊一下测试工程师的面试与招聘【转载自安大叔】
  5. 世界上最好语言:PHP技术百问
  6. 快速开发平台,轻松打造企业级管理软件
  7. 指纹图片调对比度 c语言,手动调整图片打印深浅(亮度/对比度 Windows OS)
  8. 大一基础会计期末考试试题
  9. Android RecyclerView之代替ListView与GridView
  10. for语句(循环结构)