博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
详细讲解Java中方法的重载和重写
阅读量:6908 次
发布时间:2019-06-27

本文共 2426 字,大约阅读时间需要 8 分钟。

首先讲讲方法的重载:

  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");     }}

 

  与方法返回值权限修饰符无关 

  代码如下:

 

1 package com.tocean.test;//包名 2 public class Test1 { 3     //与方法返回值无关   4     public int name(int i,String name){         5         return i;             6     }        7     //与权限修饰符无关    8     private void name(double c) {        9         System.out.println("overloading");      10     }11 }

 

 

另外是方法的重写:

  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;    }}

 

转载于:https://www.cnblogs.com/crt-share/p/4769130.html

你可能感兴趣的文章
CTF笔记【一】
查看>>
MySQL命令,一篇文章替你全部搞定
查看>>
网络运维实验之不同Vlan间互通
查看>>
OC-正则表达式
查看>>
3.计算机各部件是如何工作的
查看>>
思岚科技机器人底盘价格揭秘
查看>>
WebSocket 是什么原理?为什么可以实现持久连接?
查看>>
使用Hrorm的基础知识
查看>>
Java 创建、填充PDF表单域
查看>>
MYSQL-授权
查看>>
你的编程语言能做到这个吗?
查看>>
iTerm和Alfred 2的安装和使用
查看>>
用归档解档实现简单登陆
查看>>
自动点胶机点胶不良率高是什么原因?
查看>>
Win2003中配置FTP服务,开启防火墙导致客户端无法连接【精华详解】
查看>>
【云计算】Linux从入门到精通
查看>>
oracle 解锁用户
查看>>
Hibernate与Mybatis/iBatis的区别
查看>>
Java源码学习之:Semaphore
查看>>
林仕鼎谈架构设计与架构师
查看>>