Java方法重写(方法覆盖)
1 什么是Java方法覆盖
如果子类具有与父类中声明的方法相同的方法,则在Java中被称为方法重写(或方法覆盖)。
换句话说,如果子类提供其父类已声明的方法的特定实现,则称为方法重写(或方法覆盖)。
2 Java方法覆盖的用法
- 方法覆盖用于提供其父类已经提供的方法的特定实现。
- 方法覆盖用于运行时多态
3 Java方法覆盖的规则
- 该方法必须与父类中的名称相同
- 该方法必须具有与父类相同的参数。
- 必须存在IS-A关系(继承)。
4 理解为什么需要Java方法重载
让我们了解一下,如果不使用方法覆盖,在程序中可能会遇到什么问题。
/**
* 一点教程网 - http://www.yiidian.com
*/
//通过示例讲解为什么需要Java方法覆盖
//创建父类
class Vehicle{
void run(){
System.out.println("车辆在跑...");
}
}
//创建子类
class Bike extends Vehicle{
public static void main(String args[]){
//创建子类的对象
Bike obj = new Bike();
//用子类对象调用方法
obj.run();
}
}
输出结果为:
车辆在跑...
现在问题是:我希望调用run() 方法是子类的方法,这时就需要使用方法覆盖啦。
5 Java方法重载的示例
在下面示例中,我们在子类中定义了run方法,并且提供了具体的实现逻辑。方法的名称和参数相同,并且类之间存在IS-A关系,因此存在方法覆盖。
/**
* 一点教程网 - http://www.yiidian.com
*/
//通过示例讲解Java方法覆盖的使用
//创建父类
class Vehicle{
//父类定义run方法
void run(){
System.out.println("车辆在跑...");
}
}
//创建子类
class Bike2 extends Vehicle{
//子类也定义了run方法,这样就对父类的run方法形成了方法覆盖
void run(){
System.out.println("自行车在跑...");
}
public static void main(String args[]){
Bike2 obj = new Bike2();//创建子类对象
obj.run();//调用方法
}
}
输出结果为:
自行车在跑...
6 Java方法重载的实际案例
有这么一个场景,其中Bank是提供获取利率的功能的类。但是,利率因银行而异。例如,ICBC,CCB,HSBC银行可以提供8%,7%和9%的利率。
/**
* 一点教程网 - http://www.yiidian.com
*/
//Java方法覆盖的实际案例
//后面三个银行类覆盖了Bank类的方法
//创建父类
class Bank{
int getRateOfInterest(){
return 0;
}
}
//创建子类
class ICBC extends Bank{
int getRateOfInterest(){
return 8;
}
}
class CCB extends Bank{
int getRateOfInterest(){
return 7;
}
}
class HSBC extends Bank{
int getRateOfInterest(){
return 9;
}
}
//测试类,分别使用子类对象调用方法
class Test2{
public static void main(String args[]){
ICBC s=new ICBC();
CCB i=new CCB();
HSBC a=new HSBC();
System.out.println("ICBC贷款利率为: "+s.getRateOfInterest());
System.out.println("CCB贷款利率为: "+i.getRateOfInterest());
System.out.println("HSBC贷款利率为: "+a.getRateOfInterest());
}
}
输出结果为:
ICBC贷款利率为: 8
CCB贷款利率为: 7
HSBC贷款利率为: 9
7 Java方法覆盖的常见问题
7.1 可以覆盖静态方法吗
不可以,静态方法不能被覆盖。可以通过运行时多态来证明,后面章节学习。
7.2 为什么不能覆盖静态方法
这是因为静态方法与类绑定,而实例方法与对象绑定。静态属于类区域,实例属于堆区域。
7.3 可以覆盖main方法吗
不可以,因为main方法是静态方法。
7.4 Java方法重载和Java方法覆盖的区别
后面章节讲到,点击学习《Java方法重载和Java方法覆盖的区别》
热门文章
优秀文章