java方法的重载、覆盖和隐藏,以及多态的区别
2007-10-08 20:25
801 查看
java方法的重载、覆盖和隐藏,以及多态的区别
![](http://blog.csdn.net/images/star.gif)
![](http://blog.csdn.net/images/star.gif)
![](http://blog.csdn.net/images/star.gif)
![](http://blog.csdn.net/images/star_half.gif)
![](http://blog.csdn.net/images/ask.gif)
java方法的重载、覆盖和隐藏
重载 overloading
大家都熟悉java的重载以及实现,在一个类中同一个函数以多种不同的形态出现,即函数的参数个数或者类型不一样。
例子 System.out.println(); 下面简称SOP
SOP(String str)
SOP(int number)
SOP(char ch)
SOP(double num)
.................................
这就是重载的效果
覆盖(重写) overwritting
覆盖也是大家熟悉不过了的,子类继承父类,然后子类中覆盖原父类的方法,从而实例化子类后,调用的是子类的方法。
例子
public class father{
public overwritting(){
SOP("father method");
}
public class son extends father{
public overwritting(){
SOP("son method");
}
public static void main(String args[]){
father son=new son();
son.overwritting();
}
}
结果会调用子类的overwritting方法, son method。这就是覆盖。
隐藏 hide
大家知道了覆盖,那么什么情况下,子类实例化后会调用父类的方法而不是子类的方法呢?
(当然子类和父类的方法定义需要是一样的)
大家知道static 类型的方法是不能被覆盖的,所以java利用这一个特性完成了隐藏的效果。
例子
public class father{
public static overwritting(){
SOP("father method");
}
public class son extends father{
public static overwritting(){
SOP("son method");
}
public static void main(String args[]){
father son=new son();
son.overwritting();
}
}
结果会调用父类的overwritting方法 fathetr method。这就是隐藏。
━━━━━━━━━━━━━━━━━━━━━
方法的重写、重载及隐藏
![](http://blog.csdn.net/images/star.gif)
![](http://blog.csdn.net/images/star.gif)
![](http://blog.csdn.net/images/star.gif)
![](http://blog.csdn.net/images/star_half.gif)
![](http://blog.csdn.net/images/ask.gif)
java方法的重载、覆盖和隐藏
重载 overloading
大家都熟悉java的重载以及实现,在一个类中同一个函数以多种不同的形态出现,即函数的参数个数或者类型不一样。
例子 System.out.println(); 下面简称SOP
SOP(String str)
SOP(int number)
SOP(char ch)
SOP(double num)
.................................
这就是重载的效果
覆盖(重写) overwritting
覆盖也是大家熟悉不过了的,子类继承父类,然后子类中覆盖原父类的方法,从而实例化子类后,调用的是子类的方法。
例子
public class father{
public overwritting(){
SOP("father method");
}
public class son extends father{
public overwritting(){
SOP("son method");
}
public static void main(String args[]){
father son=new son();
son.overwritting();
}
}
结果会调用子类的overwritting方法, son method。这就是覆盖。
隐藏 hide
大家知道了覆盖,那么什么情况下,子类实例化后会调用父类的方法而不是子类的方法呢?
(当然子类和父类的方法定义需要是一样的)
大家知道static 类型的方法是不能被覆盖的,所以java利用这一个特性完成了隐藏的效果。
例子
public class father{
public static overwritting(){
SOP("father method");
}
public class son extends father{
public static overwritting(){
SOP("son method");
}
public static void main(String args[]){
father son=new son();
son.overwritting();
}
}
结果会调用父类的overwritting方法 fathetr method。这就是隐藏。
━━━━━━━━━━━━━━━━━━━━━
方法的重写、重载及隐藏
首先,重写和隐藏是发生在两个类中的,而重载可以发生在一个类中。 重写的概念就是顾名思义了:重新写一遍;方法名、参数及返回值是一模一样的,可能实现的过程不一样,为什么要重写?因为原来的方法不够perfect 或者不够strong,或者达不到开发者的实际应用要求。 重载是当多个方法享有相同的名字,但是这些方法的参数不同,或者是参数的个数不同,或者是参数类型不同时。就叫方法的重载 要注意的是:返回类型不能用来区分重载的方法,仅仅返回类型不同的两个同名方法是个error,这点比较容易理解了:如果你写参数一模一样的但是返回类型不一样的方法,当调用的时候,编译器没法决定调哪个好 隐藏 如下,是华为的一道面试题 public class classA{ public void methodOne(int i){ } public void methodTwo(int i){ } public static void methodThree(int i){ } public static void methodFour(int i){ } } public class classB extends classA{ public static void methodOne(int i){ } public void methodTwo(int i){ } public void methodThree(int i){ } public static void methodFour(int i){ } } 1 问那些方法隐藏了父类的方法? 2 问那些方法覆盖了父类的方法? 其实关于隐藏的概念本人不太了解,因为基本没用过,但是上题中的重写是很明显的,那就是methodTow,methodOne和methodThree就比较明显的是个错误了,子类继承父类,两个相同的方法一个是static的,一个不是,你让编译器怎么实例化啊,那剩下的就是隐藏了,根据网上搜到的概念:static 类型的方法是不能被覆盖的;也就是说子类的methodFour写了也没用,还是调用父类的methodFour方法 Sample: public class father{ public static void overwritting(){ System.out.print("father method"); } } public class son extends father{ public static void overwritting(){ System.out.print("son method"); } public static void main(String args[]){ father son=new son(); son.overwritting(); } } 以上程序的运行结果就是输出了:father method ━━━━━━━━━━━━━━━━━━━━━
|
相关文章推荐
- java方法的重载、覆盖和隐藏,以及多态的区别
- **C++和JAVA中的多态区别以及与此相关的重载、覆盖和隐藏*
- Java重载、覆盖、多态、隐藏的区别与联系
- c#中多态的学习与使用方法以及重写(覆盖)和重载的区别
- c++中多态函数以及函数重载,覆盖,遮蔽(隐藏)的区别
- c++中多态函数以及函数重载,覆盖,遮蔽(隐藏)的区别
- java的重载、覆盖和隐藏的区别
- java的重载、覆盖和隐藏的区别
- C++学习之多态及重载(overload),覆盖(override),隐藏(hide)的区别
- java中重载,覆盖和隐藏的区别
- C++学习之多态及重载(overload),覆盖(override),隐藏(hide)的区别
- Java中类成员函数重载、覆盖和隐藏的区别
- Java编译时类型与运行时类型以及重载和覆盖方法选择
- 覆盖,重写,重载,隐藏,多态的区别
- Java中重载、覆盖和隐藏三者的区别分析
- java方法的重载、覆盖和隐藏
- java中属性的隐藏和方法的覆盖区别
- java的重载、覆盖和隐藏的区别
- C++中的重载隐藏覆盖&&JAVA中的重载覆盖&&多态
- 重载、重写(覆盖)、隐藏的区别--Java