java 方法复写_Java方法重写

如果子类中具有与父类中声明相同的方法,在java中称为方法覆盖。换句话说,如果子类提供了由其父类提供的其中一个方法的特定实现,则它被称为方法覆盖。所以方法覆盖有两个前提条件:继承和子父类中方法名称相同。

Java方法覆盖的用法

方法重写用于提供有别于超类提供的方法的特定实现。

方法重写用于运行时多态性。

Java方法覆盖的规则

方法必须与父类中的名称相同。

方法必须具有与父类中相同的参数。

必须是IS-A关系(继承)。

理解没有方法覆盖的问题

下面让我们来了解如果在程序中不使用方法覆盖可能面临的问题。

class Vehicle {

void run() {

System.out.println("Vehicle is running");

}

}

class Bike extends Vehicle {

public static void main(String args[]) {

Bike obj = new Bike();

obj.run();

}

}

执行上面代码,输出结果如下 -

Vehicle is running

问题是,必须在子类中提供一个run()方法,这就是为什么要使用方法覆盖。

方法覆盖的示例

在下面的这个例子中,在父类中和子类中都定义了run方法,但子类中有一些特定的实现。 方法的名称和参数是相同的,并且类之间有IS-A关系,因此这里run方法被覆盖了。

class Vehicle {

void run() {

System.out.println("Vehicle is running");

}

}

class Bike2 extends Vehicle {

void run() {

System.out.println("Bike is running safely");

}

public static void main(String args[]) {

Bike2 obj = new Bike2();

obj.run();

}

}

执行输出结果如下 -

Bike is running safely

Java方法重写的实例

考虑下面一个真实应用的情况,Bank是一个提供获取利率的功能的类。 但是,利息率因银行不同而有所区别。 例如,SBI,ICICI和AXIS银行可以提供8%,7%和9%的利率。

d7a7dbd1f576ad50bb0092fea358cf63.png

class Bank {

int getRateOfInterest() {

return 0;

}

}

class SBI extends Bank {

int getRateOfInterest() {

return 8;

}

}

class ICICI extends Bank {

int getRateOfInterest() {

return 7;

}

}

class AXIS extends Bank {

int getRateOfInterest() {

return 9;

}

}

class Test2 {

public static void main(String args[]) {

SBI s = new SBI();

ICICI i = new ICICI();

AXIS a = new AXIS();

System.out.println("SBI Rate of Interest: " + s.getRateOfInterest());

System.out.println("ICICI Rate of Interest: " + i.getRateOfInterest());

System.out.println("AXIS Rate of Interest: " + a.getRateOfInterest());

}

}

执行输出结果如下 -

SBI Rate of Interest: 8

ICICI Rate of Interest: 7

AXIS Rate of Interest: 9

问题:可以覆盖静态方法吗?

答: 这是不可以的,静态方法不能被覆盖。可以通过运行时多态来证明不能覆盖,在稍后章节中将学习它。

问题: 为什么不能覆盖静态方法?

答: 因为静态方法是绑定类,而实例方法绑定对象。 静态属于类区域,实例属于堆区域。

问题:可以重写java main方法吗?

答: 这是不可以的,因为main是一个静态方法。

java方法重载和方法重写之间的区别:

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值