所谓方法的覆写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中方法的覆写的更多相关文章

  1. JavaSE复习日记 : 继承关系和super关键字以及继承关系中方法的覆写

    /* * 类的继承和super关键字 * * 软件开发的三大目的: * 可拓展性; * 可维护性; * 可重用性; * * 这里单说下可重用性这一项: * 为了代码复用,复用方式有: * 函数的调用复 ...

  2. 隐身衣揭秘--java中继承/隐藏/覆写

    故事背景 看过<哈利·波特>的娃们,想必一定还记得电影中的“隐形斗篷”..这件隐形衣是哈利收到的圣诞礼物,也是死亡圣器中的三件套之一,它让哈利小盆友在执行任务的过程中简直是如虎添翼! 其实 ...

  3. [改善Java代码]覆写equals方法必须覆写hashCode方法

    覆写equals方法必须覆写hashCode方法,这条规则基本上每个Javaer都知道,这也是JDK API上反复说明的,不过为什么要这样做呢?这两个方法之间有什么关系呢?本建议就来解释该问题,我们先 ...

  4. JAVA面对对象(二)——继承、方法的覆写

    1.继承就是基于已存在的类构造一个新类,继承已存在的类就能复用类的方法和属性,并且能够添加新的方法和属性.也就是子类和父类 2.一个父类可以拥有多个子类,一个子类只允许有一个父类 3.用extends ...

  5. 菜鸡的Java笔记 第二十 - java 方法的覆写

    1.方法的覆写    当子类定义了与父类中的完全一样的方法时(方法名称,参数类型以及个数,返回值类型)这样的操作就称为方法的覆写    范例:观察方法的覆写 class A{ public void ...

  6. C#使用基类的引用 and 虚方法和覆写方法

    结论:使用基类的引用,访问派生类对象时,得到的是基类的成员. 虚方法和覆写方法

  7. Java中方法的重载

    Java 中方法的重载 问: 什么是方法的重载呢? 答: 如果同一个类中包含了两个或两个以上方法名相同.方法参数的个数.顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了.如下所示 4 个方 ...

  8. java中方法调用

    JAVA中方法的调用[基础] 一.调用本类中的方法 方法一.被调用方法声明为static ,可以在其他方法中直接调用.示例代码如下: public class HelloWord { /** * @p ...

  9. java中方法传入参数时:值传递还是址传递?

    JAVA中的数据类型有两大类型: ① 基本数据类型:逻辑型(boolean).文本型(char).整数型(byte.short.int.long).浮点型(float.double) ② 引用数据类型 ...

随机推荐

  1. [杂]DeadLock, Isolation Level, EntityFramework

    由于没有注意到EF事务的默认隔离级别是Serializable,(据说EF6.0以后默认隔离级别改成了Read_Commit_Snapshot)--这里有误,应该是加了TransactionScope ...

  2. SOAPFaultException

    javax.xml.ws.soap.SOAPFaultException: String index out of range: -6 at org.apache.cxf.jaxws.JaxWsCli ...

  3. BZOJ2783: [JLOI2012]树 dfs+set

    2783: [JLOI2012]树 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 588  Solved: 347 Description 数列 提交文 ...

  4. hdu 4640(状压dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4640 思路:f[i][j]表示一个人状态i下走到j的最小花费,dp[i][j]表示i个人在状态j下的最 ...

  5. SSH 框架学习之初识Java中的Action、Dao、Service、Model-收藏

    SSH 框架学习之初识Java中的Action.Dao.Service.Model-----------------------------学到就要查,自己动手动脑!!!   基础知识目前不够,有感性 ...

  6. SU Demos-03T-F Analysis-02Sutvband

    第一个脚本,生成震源扫描信号,并进行gabor变换 运行结果, 第二个脚本,利用时变滤波从和信号中重建单独的3个扫描信号 运行结果

  7. List<T>的使用

    定义:List<T>类表示可通过索引访问的对象的强类型列表,提供用于对列表进行搜索.排序和操作的方法. 作用:泛型最常见的用途是泛型集合我们在创建列表类时,列表项的数据类型可能是int,s ...

  8. HDU 1074 (状态压缩DP)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1074 题目大意:有N个作业(N<=15),每个作业需耗时,有一个截止期限.超期多少天就要扣多少 ...

  9. 【BZOJ】1098: [POI2007]办公楼biu(补图+bfs+链表)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1098 显然答案是补图连通块..... 想到用并查集...可是连补图的边都已经...n^2了...怎么 ...

  10. ARC指南3 - @property

      本章介绍引入ARC后@property的使用,跟ARC之前的还是很不一样的 一..h和.m文件的变化说明 1.对于.h头文件,主要是将属性定义由retain变为strong @property ( ...