Java方法之重写

article/2025/7/8 10:20:36

  方法的重写是学习java面向对象过程中一个极其重要的知识点。那么什么叫方法的重写呢?举个例子(再次摆上使用了多次的老图):
            在这里插入图片描述
博主毕业后,终于继承了家里面的一笔巨额财产:一辆奇瑞QQ。但是博主有一天发现,这辆奇瑞QQ的车轮胎很丑,不符合博主英俊潇洒的气质,所以博主决定将轮胎换成符合博主英俊潇洒气质的骚粉色。在博主更换轮胎配色的过程中,博主便执行了java方法中的重写操作。
  在java中方法的重写是建立在java类的三大特性之一:继承性的基础之上的,没有继承性也就不能谈方法的重写。方法的重写是当程序中父类的某一个方法并不能满足子类的需求时,子类可以重新定义该方法的内容与功能来满足子类的需求的一种操作。那么方法的重写具体是如何通过代码来实现的呢,下面博主就带大家一探究竟。
(1)定义一个多边形类

class Polygon{//属性private int number_side;//构造器public Polygon(int number_side) {super();this.number_side = number_side;}//方法public int getNumber_side() {return number_side;}public void setNumber_side(int number_side) {this.number_side = number_side;}public void show(){System.out.println("Number_side is " + this.number_side);}
}

  在这个类中除了get和set方法之外,还有一个可以输出多边形边数的show方法。
(2)定义一个正方形类继承于多边形类

class square extends Polygon{//属性private double length; //构造器public square(double length, int number_side) {super(number_side);this.length = length;}//方法public double getLength() {return length;}public void setLength(double length) {this.length = length;}//输出边数和边长public void show(){System.out.println("This is a square");super.show();System.out.println("Length is " + this.length);}
}

  可以看到,子类square中仍然有一个show方法,但是方法的功能和语句却与其父类中的show方法大相径庭。因为,在子类square中,子类square的show方法的功能不仅要能实现对边数的输出,更要实现对边长的输出,所以此时父类的show方法并不能满足子类的需求了,开发者应该重新编写一个show方法来满足子类的需求,这就是java中的方法重写。
  在实际的开发过程中,应用到方法重写的操作还有其他的很多种情况,接下来本文将列举几个比较常用的方法重写。
  在java的java.lang包下有一个类,名为Object。Object了是比较特殊的类,该类是所有类的父类。当我们创建一个类时,如果没有声明继承于我们自己创建的类,那么就继承于Object,只不过java里省略了extends Object关键字。Object类中有两个经常使用到的方法:1.toString()方法;2.equals()方法。这两种方法在开发者创建的类中经常被重写。

1.toString()方法
  toString()方法的功能是将一个对象以字符串的形式返回。例如:

Polygon p = new Polygon(3);
System.out.println(p.toString());

这里调用的toString()方法是Object类中的toString()方法。
在这里插入图片描述
输出为:
在这里插入图片描述
由此可见:当调用Object类中的toString()方法时返回的是一个字符串形式的对象,即该对象的地址。
  在实际的应用中通常重写toString()方法,为对象提供一个特定的字符串输出模式,例如:

public class Test {public static void main(String[] args) {Polygon p = new Polygon(3);System.out.println(p.toString());}	
}
class Polygon{//属性private int number_side;//构造器public Polygon(int number_side) {super();this.number_side = number_side;}//..................................此处省略其他无关的方法@Overridepublic String toString() {return "Polygon [number_side=" + number_side + "]";}}

在多边形类Polygon中重写了toString()方法,在main方法中我们创建一个Polygon的对象p并实例化,调用Polygon中重写的toString()方法。
在这里插入图片描述
此时系统输出字符串形式的Polygon类名和其属性。
在这里插入图片描述
2.equals()方法
  equals()方法在Object类中的具体体现是怎样的呢?它的功能又是什么呢?老规矩,直接上代码。

	public boolean equals(Object obj) {return (this == obj);}

这是源代码中Object类的equals()方法的具体实现,这样我们便知道,Object中equals()方法的功能是比较两个对象的引用是否相等。当我们调用Object类中的equals()方法时:

public class Test {public static void main(String[] args) {square s1 = new square(5.2,4);square s2 = new square(5.2,4);System.out.println(s1.equals(s2));}	
}

系统的输出为:

在这里插入图片描述
  然后我们重写square类中的equals()方法

public boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;square other = (square) obj;if (Double.doubleToLongBits(length) != Double.doubleToLongBits(other.length))return false;return true;}

再次调用square类中的equals()方法时

public class Test {public static void main(String[] args) {square s1 = new square(5.2,4);square s2 = new square(5.2,4);System.out.println(s1.equals(s2));}	
}

系统的输出为:
在这里插入图片描述
  相比之前的fasle,此时输出true是因为重写了equals()方法,而重写的equals()方法比较的是两个对象的实际内容,即两个对象的属性(注意:equals()方法并不比较两个对象的方法,因为无意义),相等就输出true。

  以上就是关于方法的重写的基本知识和一些常用的点。之前在多态性的那一章博主提到过:方法的重写也是多态性的一种体现,现在我们可以知道,同样都是toString()和equals()方法,在自定义类中重写之后和Object类中的功能完全不同,这也是同种事物的不同表现形式,符合多态性的本质。

特殊声明:本人并不是大佬,只是说一说自己在学习Java过程中的理解,文章有不正确的地方欢迎大家批评指正。最后希望大家不喜勿喷,营造良好的学习环境。
温馨提示:道路千万条,学习第一条。平时不学习,招聘两行泪!!!


http://chatgpt.dhexx.cn/article/FokIax7V.shtml

相关文章

为什么重写equals一定要重写hashcode?

引言 这篇文章已经是我很久之前写的,其中的内容表述得不太清楚,或多或少难以让人信服,于是我又写了一篇,链接如下: CSDN链接:彻底搞懂为什么重写equals还要重写hashcode? 微信公众号链接&…

详述重写

1、什么是重写 重写即重新改写,是为了将一个已有的事物进行某些改变以适应新的要求 2、为什么要重写 方法使用的是父类的eat方法,子类继承自父类的eat方法已经不能“准确描述子类自身的行为”,此时就需要用到重写 注:如果父类中…

什么是重写?重写的作用?

一、什么是重写? 1. 重写(Override)概念 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够…

店铺淘客软件定制,1688分销软件OEM贴牌配合精细化运营提升店铺流量

之前做淘宝的有很多人做的是店淘模式,简单来讲店淘模式就是我们开一个淘宝店,然后用软件采集淘宝联盟上的高佣金高销量产品上传到咱们自己的店铺,目前市场上这类软件种类繁多,主要是看软件的功能,安全深度,…

弘辽科技:拼多多的流量从何而来?怎样提升店铺流量?

原标题《弘辽科技:拼多多的流量从何而来?怎样提升店铺流量?》 无论在哪个平台开店,要想商品卖出去,就一定要有要有流量才可以。自然流量对卖家来讲,肯定是最好的,因为不用花钱去做推广。那么,拼多多的流…

弘辽科技:10大手淘推荐流量来源地,快速提升店铺流量

原标题《弘辽科技:10大手淘推荐流量来源地,快速提升店铺流量》 在手淘上面有不少流量都是来自于推荐的,但是这些流量都是来源于哪些呢?商家们肯定对此很是疑惑,对这些“不知来源的流量”很是好奇。接下来就告诉大家这…

分享淘宝如何提升免费流量 附疫情期间遇到的一些店铺问题

大家保护好自己不给祖国添麻烦!出门戴口罩,勤洗手,少去人群聚集处。疫情期间很多人都不知做什么,有很多喜欢淘宝在做的时候去碰到了一堆问题如:铺流量下滑,或者标题修改流量降低,提升店铺流量办法等等很多,…

店铺自然流量是什么?如何提升其自然流量

我们常说,互联网时代流量为王。那么自然流量是什么?是线上的客流,获取流量,才能获取消费者;但自然流量不是最关键的,如何转化流量才是关键。本文带你分析分析自然流量及其转化问题,以及如何提升…

Shopee Man多店铺运营管理工具教你提升印尼Shopee本土店铺流量

现在做Shopee平台,提升店铺流量至关重要,流量在一定程度上能够决定店铺的销量,所以当现在有许多商家入驻东南亚地区最具潜力的电商市场印尼站时,就会从提升店铺流量这方面下功夫,那么想要提升Shopee印尼站的店铺流量&a…

Lazada Feed可行性在于提升Lazada店铺流量的工具之一

Lazada发展迅速,成为了跨境电商引领者之一。Lazada平台也越来越重视内容营销发展。Lazada有Feed的内容方式,可以助力卖家进行一个营销推广的作用,达到促进销量增长的效果。 Lazada Feed可以理解为淘宝的微淘,是卖家通过发布互动帖…

提升eBay店铺流量的方式有哪些?

对很多淘宝ebay卖家来说,也希望能够做好店铺的站外推广,但是也有很多的方式,我这就来给各位卖家们详细介绍一下,另外也要了解一下推广到底需要多久才有效果。 1、Facebook广告 Facebook广告作为全球最大的社交平台,自然…

成都榆熙:商家怎样提升店铺自然流量?

越来越多的商家都开始入驻拼多多,而盲目跟风开店是不可行的,多多少少都需要有一些开店经验和对拼多多的了解,那么如果拼多多店铺一直没有自然流量怎么办呢?一起来和成都榆熙小编来看看吧。 一、什么是拼多多自然流量?…

速卖通店铺流量下滑什么原因,如何做提升?(测评补单)

速卖通作为阿里巴巴未来国际化的重要战略产品,已成为全球最活跃的跨境电商平台之一,并依靠阿里巴巴庞大的会员基础,成为目前全球产品品类最丰富的平台之一。 近期有朋友问我,速卖通店铺开了几个月,店铺流量一直都是稳定上升状态,可是不知道怎…

新手店铺如何稳定提升流量? 精细化运营带你提升店铺权重

现在随着电商行业的发展,越来越多的人会选择淘宝开店,选择做无货源模式。这个模式也已经火了两三年了,做的人也很多,但是做的好的人却是寥寥无几。原因在哪?主要还是不会操作方法。所以想做好这个无货源店铺,方法很重要。 那么到底有多少人真正理解它到底是做什么的,怎…

亚马逊、Lazada卖家如何做测评自养号和提升店铺流量

店铺销售额等于店铺流量乘以转化率乘以客户单价。因此,流量在每个平台都非常的重要。如果店铺的流量足够好,就能获得更大的销售可能。那么,如何改善和提升Lazada的店铺流量呢? 接下来就说说怎么来提升流量。 一.产品流量 产品层…

弘辽科技:淘宝如何提升店铺流量?需要准备什么?

对于淘宝商家来说,流量非常的重要。很多淘宝商家也都选择在淘宝上开店,但是在一段时间后,发现店铺完全没有流量,面对这样的情况,应该如何去补流量呢?下面进行介绍哦。 淘宝如何提升店铺流量? 对…

速卖通、阿里国际如何提升店铺流量?如何安全测评?

卖家在开店后,最关心的就是店里的销售情况。买家如果看到店里的商品销售评价多了,就会觉得该商品比较好,受多数买家欢迎,就会考虑下单。 怎样提高速卖通的店铺流量? 第一,自然搜索流量。为了有效地提升渠…

辽宁启迪电商:拼多多提升店铺流量的几个技巧

拼多多创业成为现在越来越多人的选择,想要成功创业,那么店铺的流量是十分关键的,很多人都想自己的店铺越来越好,不过却不知道拼多多提升店铺流量的几个技巧,下面就和辽宁启迪电商一起来看看吧! 可以和一些卖家互相添加…

速卖通运营之--如何通过搜索快速提升店铺流量

写在前面:速卖通新品上新了怎么没有流量,曝光怎么这么低,最近也有很多商家在咨询小编,店铺流量低,怎么提升,核心就是产品搜索排序的方法没有掌握,今天给大家分享的是如何快速的通过搜索获取更多…

淘宝新店铺怎么提升流量?方法有哪些?

现在淘宝开店的商家可以说是越来越多的哦,在这种情况下,要做好淘宝店铺并不容易哦,那么淘宝新店铺怎么提升流量?方法有哪些?下面的内容中为大家进行介绍,希望对大家有所帮助。 1、 首先,要给自己的淘宝店起一个好记又…