Java 方法重写,Java什么是方法重写
如何解决写爬虫IP受阻的问题?立即使用。
java中方法重写的方法:
在java中,方法的重写基于java类的三个特征之一:继承。没有继承,就谈不上方法的重写。方法重写是当一个程序中父类的一个方法不能满足子类的需要时,子类可以重新定义一个方法的内容和功能来满足子类的需要的操作。那么方法的重写是如何通过代码实现的呢?下面博主带你一探究竟。
(1)定义多边形类
类多边形{
//属性
private int number _ side
//构造函数
公共多边形(int number_side) {
super();
this.number _ side=number _ side
}
//方法
public int getNumber_side() {
返回number _ side
}
public void set number _ side(int number _ side){
this.number _ side=number _ side
}
公共void show(){
system . out . println( Number _ side就是 this . Number _ side );
}
}在这个类中,除了get和set方法,还有一个show方法,可以输出多边形的边数。
(2)定义正方形类继承多边形类。
类正方形扩展多边形{
//属性
私倍长;
//构造函数
公共正方形(double length,int number_side) {
超(数_方);
this.length=长度;
}
//方法
public double getLength() {
返回长度;
}
public void setLength(double length){
this.length=长度;
}
//输出边的数量和长度
公共void show(){
System.out.println(这是正方形);
super . show();
System.out.println(Length是 this . Length);
}
}如你所见,子类square中仍然有一个show方法,但其功能和语句与父类中的show方法有很大不同。因为,在子类square中,子类square的show方法的函数不仅要输出边数,还要输出边长,所以此时父类的show方法不能满足子类的需求,开发者要重写一个show方法来满足子类的需求,这就是java中的方法重写。
在实际开发过程中,还有很多其他情况适用于方法重写。接下来,本文将列举几种常用的方法重写。
在java的java.lang包下,有一个名为Object的类。对象是一个特殊的类,它是所有类的父类。当我们创建一个类时,如果我们没有声明它继承自我们自己创建的类,那么它继承自Object,只是java中省略了extends Object关键字。Object类中常用的方法有两种:1.toString()方法;2.2.equals()方法这两个方法通常在开发人员创建的类中被重写。
1、toString()方法
toString()方法的作用是以字符串的形式返回一个对象。例如:
多边形p=新多边形(3);
system . out . println(p . tostring());这里调用的toString()方法是Object类中的toString()方法。
输出是:
可以看出,调用Object类中的toString()方法时,返回的是一个字符串形式的对象,即对象的地址。
在实际应用中,通常会重写toString()方法,为对象提供特定的字符串输出模式,例如:
公共类测试{
公共静态void main(String[] args) {
多边形p=新多边形(3);
system . out . println(p . tostring());
}
}
类多边形{
//属性
private int number _ side
//构造函数
公共多边形(int number_side) {
super();
this.number _ side=number _ side
}
//.....这里省略了其他不相关的方法。
@覆盖
公共字符串toString() {
返回 Polygon[number _ side= number _ side ];在Polygon类Polygon中,toString()方法被重写。在main方法中,我们创建一个polygon对象P并实例化它,在Polygon中调用重写的toString()方法。
此时,系统以字符串的形式输出多边形类名及其属性。
2、equals()方法
equals()方法在对象类中的具体体现是什么?它的功能是什么?老规矩,直接去码。
公共布尔等于(对象对象){
return(this==obj);
}这是Object类的equals()方法在源代码中的具体实现,让我们知道Object中equals()方法的作用就是比较两个对象的引用是否相等。当我们在Object类中调用equals()方法时:
公共类测试{
公共静态void main(String[] args) {
正方形s1=新正方形(5.2,4);
平方s2=新平方(5.2,4);
system . out . println(S1 . equals(S2));
}
}系统的输出是:
然后我们在square类中覆盖equals()方法。
公共布尔等于(对象对象){
if (this==obj)
返回true
if (obj==null)
返回false
if (getClass()!=obj.getClass())
返回false
square other=(平方)obj
if(double . doubletolongbits(length)!=Double。doubleToLongBits(其他长度))
返回false
返回true
}当再次调用square类中的equals()方法时
公共类测试{
公共静态void main(String[] args) {
正方形s1=新正方形(5.2,4);
平方s2=新平方(5.2,4);
system . out . println(S1 . equals(S2));
}
}系统的输出是:
与前面的fasle相比,此时输出true是因为重写了equals()方法,重写后的equals()方法比较两个对象的实际内容,也就是两个对象的属性(注意:equals()方法没有比较两个对象的方法,因为没有意义),当它们相等时输出true。
这就是关于方法重写的基础知识和一些共同点。在前面关于多态性的章节中,博主提到方法的重写也是多态性的一种表现。现在,我们可以知道它们都是toString()和equals()方法。在自定义类中重写后,它们的功能与对象类中的完全不同。这也是同一类事物的不同表现,符合多态性的本质。
推荐教程:《java视频教程》以上是如何用java重写的?更多详情请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。