J2SE--重写和重载
来源:互联网 发布:java截屏代码 编辑:程序博客网 时间:2024/06/03 01:32
在java的学习中我们经常会遇到方法的重写和重载。这篇博客将介绍java中的重写和重载。
一重载(overload)
百度百科:在一个类定义中,可以编写几个同名的方法,但是只要它们的签名参数列表不同,Java就会将它们看做唯一的方法。简单的说,一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。
个人理解:其实意思就是说在一个类中有多个相同名称的方法,但是参数不同,不同的方式可以是个数不同、可以是类型不同、或者是两者均不同均可。返回类型是否相同没有任何妨碍。外界在调用这个类的的方法,要让我们知道是调用的那个方法,能够将这些方法区分开。
二 重写(overwrite/override)
百度百科:通常,派生类继承基类的方法,因此,在调用对象继承方法的时候,调用和执行的是基类的实现.但是,有时需要对派生类中的继承方法有不同的实现.例如,假设动物类存在"跑"的方法,从中派生出马和狗,马和狗的跑得形态是各不相同的,因此同样方法需要两种不同的实现,这就需要"重新编写"基类中的方法.
个人理解:重写是以继承为前提的。重写的是神马?重写的是父类的方法,既然是重写别人的方法,那么方法名、参数和返回类型就必须相同。为什么要使用重写?子类继承父类,也就意味着子类拥有了父类的所有方法和属性。但是子类对父类的这个方法并不是很满意,想要进行修改,怎么办?那就使用重写了。
我们在调用子类的方法的时候,程序先调用父类的这个方法,如果子类重写此方法则执行子类的方法,如果子类没有此方法(前提是父类有),则执行父类原来的方法。总之,子类继承了父类中所有的属性和方法。
注意:1 重写方法的必须和被重写方法具有相同方法名称、参数列表和返回类型。
2 重写父类方法不能使用比重写方法更严格的方法权限
三重写重载示例
代码
class Father{ public void func1(){ func2(); } //这是父类中的func2()方法,因为下面的子类中重写了该方法 //所以在父类类型的引用中调用时,这个方法将不再有效 //取而代之的是将调用子类中重写的func2()方法 public void func2(){ System.out.println("AAA"); } public void func3(){ System.out.println("fulei"); }} class Child extends Father{ //func1(int i)是对func1()方法的一个重载,func1()继承自父类,虽然程序中没有显示。 public void func1(int i){ System.out.println("BBB"); } //子类重写父类func2方法。 public void func2(){ System.out.println("CCC"); } } public class Test { public static void main(String[] args) { Father child = new Child(); //Child littlebaby = new Father(); child.func1(); //结果CCC //调用子类中继承的方法 child.func2(); //结果CCC //子类重写父类方法 Father baba = new Father(); baba.func2(); //结果AAA //实例化父类,直接调用父类的方法 Child baby = new Child(); baby.func1(68); //结果BBB //调用子类中的方法 baby.func1(); //结果CCC //调用子类中的重写的方法 baby.func3(); //结果fulei //调用子类继承的方法。 } }
四总结
重载必须是在一个类中的的多个方法;重写必须以继承为前提,也就是说最少2个类。重载是一个类中多态性的表现,重写是父类和子类之间的一种多态性的表现。重载在编译时检测,重写在执行时执行。
在看完了J2SE视频之后,真切的感受到了java是一种面向对象的语言。一切的根源都来自于"Object"。都是从它继承而来。多态性是面向对象语言的特点,而重写是实现多态的基础。
0 0
- J2SE--重写和重载
- 关于重载和重写
- 重载和重写
- 关于重写和重载
- C# 重写和重载
- 重载和重写
- JAVA 重写和重载
- 方法重载和重写
- 关于重载和重写
- 重写和重载
- 重载和重写
- 覆盖(重写)和重载
- java 重载和重写
- java 重写和重载
- 重载和重写
- 方法重写和重载
- 重载和重写
- 【c#】重写和重载
- linux内核分析--中断处理流程
- 文件目录
- Linux Shell编程入门
- 他人博客
- KMP算法
- J2SE--重写和重载
- NYOJ 543 遥 控 器
- JS的各种排序算法实现--暂时不懂
- [2014]编程之美第3题,格格取数问题
- 加载图片内存管理
- UML类图几种关系的总结
- 正则表达式
- Web前端年后跳槽必看的各种面试题
- 趣文:假如编程语言在一起聚餐