详细讲解Java中方法的重载和重写
2015-08-29 14:44
525 查看
首先讲讲方法的重载:
Java的重载就是在类中可以创建多个方法,它们具有相同的名字,但是却有不同的参数。
判断是否重载只有两个条件:
1)相同的方法名
2)不同的参数 具体为:
A、方法参数类型不同
B、方法参数个数不同
C、方法参数排列顺序不同
代码如下:
与方法返回值和权限修饰符无关
代码如下:
另外是方法的重写:
Java的重写前提是继承,继承的子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要方法的重写。
判断是否重写有五个条件:
A、相同的方法名
B:相同的方法参数
C:权限修饰符不能比父类更窄
D:抛出异常比父类不能更多
E:返回值和父类返回值一致或是其子类
代码如下:
Java的重载就是在类中可以创建多个方法,它们具有相同的名字,但是却有不同的参数。
判断是否重载只有两个条件:
1)相同的方法名
2)不同的参数 具体为:
A、方法参数类型不同
B、方法参数个数不同
C、方法参数排列顺序不同
代码如下:
package com.tocean.test;//包名 public class Test1 { public void name(int i){ System.out.println("overloading"); } //方法类型不同 public void name(String name){ System.out.println("overloading"); } //方法参数个数不同 public void name(int i,String name,double c){ System.out.println("overloading"); } //参数的排列顺序不同 public void name(double c,int i ,String name){ System.out.println("overloading"); } }
与方法返回值和权限修饰符无关
代码如下:
package com.tocean.test;//包名 public class Test1 { //与方法返回值无关 public int name(int i,String name){ return i; } //与权限修饰符无关 private void name(double c) { System.out.println("overloading"); } }
另外是方法的重写:
Java的重写前提是继承,继承的子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要方法的重写。
判断是否重写有五个条件:
A、相同的方法名
B:相同的方法参数
C:权限修饰符不能比父类更窄
D:抛出异常比父类不能更多
E:返回值和父类返回值一致或是其子类
代码如下:
package com.tocean.test; public class Father { public void getSay(String str){ System.out.println("父类在说:"+str); } } class Son extends Father{ //访问修饰符不能比父类更窄、不是方法重写 private void getSay(String str){ System.out.println("子类在说:"+str); } }
package com.tocean.test; import java.io.IOException; public class Father { public void getSay(String str) throws Exception{ System.out.println("父类在说:"+str); } } class Son extends Father{ //抛出的方法比父类更多,不是方法的重写(注意是异常的数量,不是异常的范围) private void getSay(String str) throws IOException,RuntimeException{ System.out.println("子类在说:"+str); } }
package com.tocean.test; public class Father { public String getSay(String str) { System.out.println("父类在说:"+str); return str; } } class Son extends Father{ //方法的返回值与父类相同,是方法的重写 public String getSay(String str) { System.out.println("子类在说:"+str); return str; } }
package com.tocean.test; public class Father { public Object getSay(String str) { System.out.println("父类在说:"+str); return str; } } class Son extends Father{ //方法的返回值与父类不相同相同,但是其的子类,是方法的重写 public String getSay(String str) { System.out.println("子类在说:"+str); return str; } }
相关文章推荐
- 欢迎使用CSDN-markdown编辑器
- AndroidStudio导入Eclipse工程
- Java学习笔记(2):null 和空字符串的区别
- java HashMap那点事
- 用Eclipse创建第一个Spring项目(最最入门级)
- 折腾ubuntu14.04安装jdk1.6记录
- java注解
- 模拟JavaWeb过滤器——责任链模式
- java按指定编码写入和读取文件内容的
- myeclipse 安装反编译插件
- tomacat无法启动---174 javajni.c] [error] %1 不是有效的 Win32 应用程序。
- 基于XML配置的Spring MVC 简单的HelloWorld实例应用
- 从零开始学Java之IO字符流懒人模式(自动生成属性类,方法类,界面类)
- JAVA虚拟机加载类的方式解析
- eclipse通过maven构建普通的工程,后转成SpringMVC工程
- Java类自动扫描功能的实现
- struts.xml配置和url请求解释
- 大龄屌丝自学笔记--Java零基础到菜鸟--013
- Java 多线程
- java语句与流程控制