Java中方法的覆写
所谓方法的覆写override就是子类定义了与父类中同名的方法,但是在方法覆写时必须考虑权限,即被子类覆写的方法不能拥有比父类方法更加严格的访问权限。
修饰符分别为public、protected、default、private。他们的访问权限如下图所示。
用public修饰的类在本类、同包、子类、其他包中互相访问都是可以的。
用protected修饰的类在本类、同包、子类中互相访问都是可以的,protected不可以在包外没有继承关系的类中互相访问。
就说明用default修饰的类在本类、同包中互相访问都是可以的,default不可以在包外不管有没有继承关系的类都不可以互相访问。
用private修饰的类只能在本类中访问。
它们的访问权限大小是 public > protected > default > private;
如果在父类中的使用public定义的方法,则在子类中的访问权限必须是public,否则程序无法通过编译。
class Person{
void print(){
System.out.println("Person --> void print(){}");
}
} class Student extends Person{
public void print(){
System.out.println("Student --> void print(){}"); //覆盖父类中的方法,扩大了权限
}
} public class OverrideDemo01 {
public static void main(String[] args){
new Student().print();
}
}
父类中定义的private方法,在子类中定义成default方法,这种不是方法的覆写。
class Person{
private void print() {
System.out.println("Person --> void print(){}" );
}
public void fun() {
this.print();
}
} class Student extends Person{
void print(){
System.out.println("Student --> void print(){}");
}
} public class OverrideDemo04 {
public static void main(String[] args) {
new Student().fun();
}
}
输出结果:Person --> void print(){}可见调用的方法是父类的方法,也就是说此时子类并没有覆写父类中的方法,而是子类中重新定义了一个新的方法。 父类子类中如果声明了相同的属性时,则在子类中直接访问时一定采用“就近访问原则”, 即先找到本类中的属性,如果此时要调用父类中的属性,直接使用“super.属性”格式即可。 覆写与重载的区别
Java中方法的覆写的更多相关文章
- JavaSE复习日记 : 继承关系和super关键字以及继承关系中方法的覆写
/* * 类的继承和super关键字 * * 软件开发的三大目的: * 可拓展性; * 可维护性; * 可重用性; * * 这里单说下可重用性这一项: * 为了代码复用,复用方式有: * 函数的调用复 ...
- 隐身衣揭秘--java中继承/隐藏/覆写
故事背景 看过<哈利·波特>的娃们,想必一定还记得电影中的“隐形斗篷”..这件隐形衣是哈利收到的圣诞礼物,也是死亡圣器中的三件套之一,它让哈利小盆友在执行任务的过程中简直是如虎添翼! 其实 ...
- [改善Java代码]覆写equals方法必须覆写hashCode方法
覆写equals方法必须覆写hashCode方法,这条规则基本上每个Javaer都知道,这也是JDK API上反复说明的,不过为什么要这样做呢?这两个方法之间有什么关系呢?本建议就来解释该问题,我们先 ...
- JAVA面对对象(二)——继承、方法的覆写
1.继承就是基于已存在的类构造一个新类,继承已存在的类就能复用类的方法和属性,并且能够添加新的方法和属性.也就是子类和父类 2.一个父类可以拥有多个子类,一个子类只允许有一个父类 3.用extends ...
- 菜鸡的Java笔记 第二十 - java 方法的覆写
1.方法的覆写 当子类定义了与父类中的完全一样的方法时(方法名称,参数类型以及个数,返回值类型)这样的操作就称为方法的覆写 范例:观察方法的覆写 class A{ public void ...
- C#使用基类的引用 and 虚方法和覆写方法
结论:使用基类的引用,访问派生类对象时,得到的是基类的成员. 虚方法和覆写方法
- Java中方法的重载
Java 中方法的重载 问: 什么是方法的重载呢? 答: 如果同一个类中包含了两个或两个以上方法名相同.方法参数的个数.顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了.如下所示 4 个方 ...
- java中方法调用
JAVA中方法的调用[基础] 一.调用本类中的方法 方法一.被调用方法声明为static ,可以在其他方法中直接调用.示例代码如下: public class HelloWord { /** * @p ...
- java中方法传入参数时:值传递还是址传递?
JAVA中的数据类型有两大类型: ① 基本数据类型:逻辑型(boolean).文本型(char).整数型(byte.short.int.long).浮点型(float.double) ② 引用数据类型 ...
随机推荐
- Wcf for wp8 使用iis Express 承载Wcf服务部署发布网站(三)
我们接下来要做的是 本地电脑当作服务器(模拟外网服务器)来承载Wcf服务程序,通过引用本地电脑ip地址访问wcf服务程序接口 http://192.168.1.123/Service1.svc 一.先 ...
- C# 常用正则表达式
// 匹配移动手机号 @"^1(3[4-9]|5[012789]|8[78])\d{8}$"; // 匹配电信手机号 @"^18[09]\d{8}$"; ...
- C++的那些事:数据与类型
一.前言 最近在看C++Primer第5版,先前已经看过第4版,但是发现第5版在整个知识布局与个别知识的讲解上跟第4版差别还是挺大的,尤其是新增了C++11的内容,正如孟岩老师在第5版前言中所讲:“现 ...
- Equipment Box[HDU1110]
Equipment Box Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- 【BZOJ】1854: [Scoi2010]游戏
http://www.lydsy.com/JudgeOnline/problem.php?id=1854 题意:n个数据,每个数据有两个属性,要求取一些数据且每个数据取一个属性使得组成连续的一段单调递 ...
- 【BZOJ】1491: [NOI2007]社交网络(floyd)
http://www.lydsy.com/JudgeOnline/problem.php?id=1491 囧囧囧...................... 囧1:虽然自己想到做法了,但是操作的时候, ...
- Redis内存存储结构分析
1 Redis 内存存储结构 本文是基于 Redis-v2.2.4 版本进行分析. 1.1 Redis 内存存储总体结构 Redis 是支持多key-value数据库(表)的,并用 RedisDb 来 ...
- Repeater控件中的三目运算
<asp:Repeater ID="rptimg" runat="server"> <ItemTemplate> ...
- 提升 web 应用程序的性能(一)
提升 web 应用程序的性能,找出瓶颈,加快客户端内容的速度. 作为 web 用户,我们知道页面加载或刷新的速度对其成功至关重要.本文将帮助您更好地理解影响 web 应用程序性能的因素.学 ...
- VTK 6 和 VTK 5 的不同
Overview Replacement of SetInput() with SetInputData() and SetInputConnection() Removal of GetProduc ...