JAVA中继承时方法的重载(overload)与重写/覆写(override)
JAVA继承时方法的重载(overload)与重写/覆写(override)
重载-Override
函数的方法参数个数或类型不一致,称为方法的重载。
从含义上说,只要求参数的个数或参数的类型不一致就说两个函数是重载函数,而至于返回值是否一样,没关系。同时,重载可以发生在同一个类中也可以发生在继承关系中。
class A
{ } class B extends A { public void fun(String data1) { System.out.println(data1); } public String fun(String data1, String data2) { System.out.println(data1 + "-->" + data2); return ""; } }
上面的代码说明了在同一个类中的方法重载。此外,如果我们把第一个函数移到A类中,也构成了重载关系。
class A
{
public void fun(String data1)
{
System.out.println(data1);
}
}
class B extends A
{
public String fun(String data1, String data2)
{
System.out.println(data1 + "-->" + data2);
return "";
}
}
重写-Override
重写也被称为覆写。对一个方法的重写必须发生在具有继承关系的两个类中,即子类对父类方法的重写。它要求两个方法的参数个数和类型以及返回值类型都必须一致,这样才称为方法重写。
class A
{
public void fun(String data)
{
System.out.println(data);
}
}
class B extends A
{
public void fun(String data)
{
System.out.println("XXXX" + data);
}
}
上面代码演示了子类对父类方法的覆写。可以看到两个函数的参数个数和类型以及返回值都是一致的。
同时子类对父类的方法覆写对权限有要求,子类方法的访问权限必须大于或等于父类方法的访问权限。也就是说如果父类方法的访问权限是default,那么子类必须是default或者public,如果父类方法是public访问权限,那么子类就只能是public访问权限了。然而,实际开发中,绝大多数的方法都是public访问权限,所以覆写方法也是public。
关于访问权限,还有一点需要注意的是,父类方法如果是private,根据JAVA的封装性原则,private是不让其它任何类访问的。那么,此时子类能否对父类的private方法进行覆写呢?
答案是否定的。
class A
{
public void test()
{
fun();
}
private void fun()
{
System.out.println("父类的private fun()");
}
}
class B extends A
{
public void fun()
{
System.out.println("子类的public fun()");
}
}
public class Hello
{
public static void main(String[] args) throws Exception
{
B b = new B();
b.test();
}
}
此时运行结果是调用的父类的private fun()方法。
所以,此时对重载和覆写做一个总结:
|
比较项目 |
重载 |
覆写/重写 |
|
英文名 |
Overload |
Override |
|
函数签名 |
只要求函数的参数个数或类型不一致,对返回值没要求 |
函数的参数个数、类型、返回值都必须完全一样。 |
|
发生地方 |
同一个类或者具有继承关系的两个类中 |
只能发生在继承关系的两个类中 |
|
访问权限 |
没有限制 |
子类覆写方法的访问权限必须大于或等于父类的方法的访问权限 |
JAVA中继承时方法的重载(overload)与重写/覆写(override)的更多相关文章
- [转]Java中继承、多态、重载和重写介绍
什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承.多态.重载和重写. 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上 ...
- java 中继承,组合,重载,重写的实现原理 (转)
我们知道,继承,组合,重载,重写是java语言的面向对象实现的基本特征. 那么在java内部,究竟是如何实现这些面对对象的基本特征的呢? 继承和组合是面向对象中代码复用的主要实现方式,他们可以达到类似 ...
- java基础学习总结——方法的重载(overload)
一.方法的重载 方法名一样,但参数不一样,这就是重载(overload). 所谓的参数不一样,主要有两点:第一是参数的个数不一样,第二是参数的类型不一样.只要这两方面有其中的一方面不一样就可以构成方法 ...
- Java方法多态性——方法的重载Overload和重写Override
方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式. 重写(Override) 重写是 ...
- Java中继承时静态块,构造块,构造函数的执行顺序
public class Father { static { System.out.println("Father静态块"); } { System.out.println(&qu ...
- java中继承thread类的其他类的start()方法与run()方法
java中继承thread或者实现runnable接口的类必须重写run()方法. 如果其执行了start()方法,其实就是启动了线程的run()方法. 注意:如果是实现runnable接口的类是没有 ...
- 方法的覆盖(override)、重载(overload)和重写(overwrite)
body { background-color: white } .markdown-body { min-width: 200px; max-width: 760px; margin: 0 auto ...
- C#类的继承,方法的重载和覆写
在网易云课堂上看到唐大仕老师讲解的关于类的继承.方法的重载和覆写的一段代码,注释比较详细,在此记下以加深理解. 小总结: 1.类的继承:允许的实例化方式:Student t=new Student() ...
- Java中的native方法
博客引用地址:Java中的native方法 今天花了两个小时把一份关于什么是Native Method的英文文章好好了读了一遍,以下是我依据原文的理解. 一. 什么是Native Method 简单地 ...
随机推荐
- jQuery插件 -- 表单验证插件jquery.validate.js, jquery.metadata.js
原文地址:http://blog.csdn.net/zzq58157383/article/details/7718352 最常使用JavaScript的场合就是表单的验证,而jQuery作为一个 ...
- C#的委托 Action<>和Func<>
其实他们两个都是委托[代理]的简写形式. 一.[action<>]指定那些只有输入参数,没有返回值的委托 Delegate的代码: [csharp] public delegate vo ...
- 使用 Knockout 扩展器扩展 observables
原文地址:http://knockoutjs.com/documentation/extenders.html 原文名称:Using extenders to augment observables ...
- each和$(this)配合循环_siblings选取同级不同类型元素
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- SVN的分支、主干合并的使用说明
EBAPP代码SVN服务器地址:http://scm.jrj.cn/webapp/ 使用右键菜单中SVN的二级菜单Repo-Broswer查看SVN服务器目录结构 目录结构如下: 名称及功能说明: T ...
- weblogic11g重置控制台管理员用户名/密码
weblogic安装后,很久不用,忘记访问控制台的用户名或者密码,可通过以下步骤来重置用户名密码. 说明:%DOMAIN_HOME%:指WebLogic Server 域(Domain)目录例如我的做 ...
- 任我行 CRM 9.4
下载地址: http://ftp.wecrm.com/azb/graspcrm_ect_v9.4.rar 200用户补丁下载地址: http://bbs.sunwy.org/thread-197862 ...
- 【Reporting Services 报表开发】— 数据表存储格式修改
文本框 Format属性:日期:输入d(表示简易日期).2007/5/1 0:00:00 输入d之后 变成 2007/5/1 金额:输入C0(表示货币),系统会根据设定值产生对应的货币符号,至于0 ...
- 网站首页title 里显示ico图标
有两种实现方式 图片尺寸大小 第一种:直接做一个favicon.ico 图标放在项目的根目录里就行 第二种:在网页HEAD标记中添加如下代码:<HEAD> <LINK REL=”SH ...
- FastJson的基本用法----转
1. [文件] User.java ~ 243B 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class User{ private int id; ...