详细讲解Java中方法的重载和重写
首先讲讲方法的重载:
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;
}
}
详细讲解Java中方法的重载和重写的更多相关文章
- Java中方法的重载与重写
1.方法的名字和参数列表称为方法的签名:每个方法具有唯一与其对应的签名: 2.方法的重载:在某个类中,存在具有多个相同名字不同参数列表的方法,称之为重载: 被重载的方法必须改变参数列表(参数个数或类型 ...
- 第五节:详细讲解Java中的接口与继承
前言 大家好,给大家带来详细讲解Java中的接口与继承的概述,希望你们喜欢 什么是接口(interface) 接口中的方法都是抽象方法,public权限,全是抽象函数,不能生成对象 interface ...
- 第四节:详细讲解Java中的类和面向对象思想
前言 大家好,给大家带来详细讲解Java中的类和面向对象思想的概述,希望你们喜欢 类和面向对象 在Java中怎样理解对象,创建对象和引用:什么是引用,对于基础学习的同学,要深入了解引用.示例:Stri ...
- 第九节:详细讲解Java中的泛型,多线程,网络编程
前言 大家好,给大家带来详细讲解Java中的泛型,多线程,网络编程的概述,希望你们喜欢 泛型 泛型格式:ArrayList list= new ArrayList(); ArrayList list= ...
- 第八节:详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架
前言 大家好,给大家带来详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架的概述,希望你们喜欢 JAVA 异常 try...catch...finally结构的使用方法 class Tes ...
- 第七节:详细讲解Java中的日期,java.util.date
前言 大家好,给大家带来详细讲解Java中的日期,java.util.date的概述,希望你们喜欢 类Date Java.lang.Object->java.util.Date public c ...
- Java中方法的重载
Java 中方法的重载 问: 什么是方法的重载呢? 答: 如果同一个类中包含了两个或两个以上方法名相同.方法参数的个数.顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了.如下所示 4 个方 ...
- 第六节:详细讲解Java中的装箱与拆箱及其字符串
前言 大家好,给大家带来详细讲解Java中的装箱与拆箱及其字符串的概述,希望你们喜欢 装箱与拆箱 封装类有:Byte , short , Integer , Character , long , Fl ...
- Java学习笔记十二:Java中方法的重载
Java中方法的重载 什么是方法的重载呢? 如果同一个类中包含了两个或两个以上方法名相同.方法参数的个数.顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了.如下所示 4 个方法名称都为 s ...
随机推荐
- aes 加密,解密
Javaaes加密: package com.sh.auth.util; import java.security.InvalidKeyException; import java.security. ...
- MySQL 修改主键
网上顺便查了下 ,要先删除 再创建,如果是添加复合主键,则复合主键值不能为空 alter table table_name drop primary key; alter table table_na ...
- linux命令之磁盘和文件系统操作
1. fdisk:磁盘分区命令 语法:fdisk [选项][参数] 命令说明:fdisk是linux系统里常用的一种磁盘管理工具,可以创建和管理系统分区 常用命令选项: -l:列出指定的并退出,没 ...
- JavaScript实现图片切换
页面内容:一个按钮标签 一个Img标签 实现原理:通过修改Img标签的src属性,实现图片的切换 备注:代码中flag变量仅仅用作标记,也可以直接用Img标签的src属性进行判断,不过在判断时候不能 ...
- chrome debugger 调试
debugger 使用chrome调试时,html页面的js代码中可能不好打断点(因为在jvm中才会有代码) 我一开始是故意在需要断点的后面或前面写个错的alert,通过jvm找到此处,然后在需要的地 ...
- php-语言参考-类型3.2-未完待续
一,PHP变量的8个类型 四种标量类型: boolean (布尔型) integer (整型) float (浮点型, 也称作 double) string (字符串) 两种复合类型: array ( ...
- Makefile中wildcard的介绍
在Makefile规则中,通配符会被自动展开.但在变量的定义和函数引用时,通配符将失效.这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATTER ...
- Qt——绘图
1.涉及类 QPainter QPaintEngine QPaintDevice 作为绘图的使用者,只需要关注 QPainter 和 QPaintDevice 2.QPainter 使用 QPain ...
- Python3爬虫(九) 数据存储之关系型数据库MySQL
Infi-chu: http://www.cnblogs.com/Infi-chu/ 关系型数据库关系型数据库是基于关系模型的数据库,而关系模型是通过二维表来保存的,所以关系型数据库的存储方式就是行列 ...
- STL 入门 (17 暑假集训第一周)
快速全排列的函数 头文件<algorithm> next_permutation(a,a+n) ---------------------------------------------- ...