文档章节

Java中的方法重写

Typing_Orange
 Typing_Orange
发布于 2017/04/23 13:37
字数 423
阅读 5
收藏 0

 

  1. 什么是方法的重写
    如果子类对继承的父类方法不满意,是可以重写父类继承的方法的。当调用方法时,会优先调用子类的方法
  2. 语法规则:
    a.返回值类型
    b.方法名
    c.参数类型及个数
    都要与父类继承的方法相同,才叫方法的重写。

    代码示例如下:
    我们先创建一个Animal类为父类
    //Animal类为父类
    public class Animal {
    	public int age ;
    	public String name;
    	public  void eat(){
    		System.out.println("动物具有吃东西的能力");
    	}
    }

    再创建一个子类:Dog类
     

    //Dog类作为子类,继承自父类Animal
    public class Dog extends Animal {
    	//Dog类中重写父类Animal类的成员方法——eat()
    	public void eat(){
    		System.out.println("狗是可以吃东西的");
    	}
    }


    在实现类中进行测试
    public class Initial {
    
    	public static void main(String[] args) {
    		//创建一个Dog类对象
    		Dog dog = new Dog();
    		//dog对象调用eat()方法
    		dog.eat();
    	}
    
    }

    最后的运行结果:
     

    狗是可以吃东西的
    

    可以看出,Dog子类重写了父类eat()方法后,子类对象再调用eat()将优先调用子类的方法!

    注意:
    (1)仅当父类的方法是可访问时,它才能被覆盖。父类的私有方法不能被覆盖。如果子类中定义的方法和父类中的私有方法同名,那么这两个方法完全没关系。
    (2) 静态方法可以被继承但是不可以被覆盖。如果父类中的静态方法被子类重写定义,那么定义在父类中的静态方法将被隐藏,可用父类名 . 静态方法调用隐藏的静态方法。

© 著作权归作者所有

Typing_Orange
粉丝 15
博文 47
码字总数 30624
作品 0
南京
私信 提问
04-《深度拆解JVM》之 JVM是如何执行方法调用的?(上)

一、问题引入 前不久在写代码的时候,郑雨迪老师不小心踩到一个可变长参数的坑。它就是由于可变长参数方法的重载造成的。(注:官方文档建议避免重载可变长参数方法,见 [1] 的最后一段。) ...

飞鱼说编程
2018/09/18
0
0
16-《深度拆解JVM》之Java语法糖与Java编译器

在前面的文章中,我们多次提到了 Java 语法和 Java 字节码的差异之处。这些差异之处都是通过 Java 编译器来协调的。今天我们便来列举一下 Java 编译器的协调工作。 一、自动装箱与自动拆箱 ...

飞鱼说编程
2018/11/09
0
1
ThreadLocal与InheritableThreadLocal区别

最近项目中为了让打印的日志可以追踪,看到了Logback和log4j2支持的MDC功能,其内部利用了子线程从父线程继承InheritableThreadLocal类型变量的特性。以前只使用到了ThreadLocal,在这里做一...

特拉仔
2018/09/01
0
0
InheritableThreadLocal的实现原理

InheritableThreadLocal实现原理 ThreadLocal 实现原理 : https://my.oschina.net/xinxingegeya/blog/297192 来回顾一下 ThreadLocal 实现原理: 每个线程都有 一个 ThreadLocalMap 类型的 ...

秋风醉了
2017/05/31
0
0
01 - JavaSE之基础及面向对象

JAVA基础知识 Java 是SUN(Stanford University Network,斯坦福大学网络公司)1995年推出的一门面向 Internet 的高级编程语言。 Java 虚拟机(JVM:Java Virtual Machine) JRE(Java Runtim...

fengdaoting
2018/01/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【JavaScript】callee 与 caller

callee callee是函数参数arguments对象的一个属性,它指向参数arguments对象所在的函数自身。 function foo (x) {console.log(arguments.callee);return x;}foo(); 从控制台中可以看...

小草先森
30分钟前
2
0
全面剖析 Knative Eventing 0.6 版本新特性

摘要: Knative Eventing 0.6 版本已经于5月15号正式发布。相比于0.5版本,此次发布包含了一些重要特性及更新。针对这些新特性以及更新,我们如何快速、精准的定位主要技术点。本篇文章针对这...

阿里云云栖社区
32分钟前
9
0
ffmpeg常用命令

1.合并两个或多个视频文件 将a.flv b.flv合并为c.flv 编辑文件flvs.txt file 'a.flv'file 'b.flv' #ffmpeg -f concat -i flvs.txt -c copy c.flv...

硅谷课堂
33分钟前
1
0
MySQL面试题--常见的四种隔离级别

什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个...

寰宇01
33分钟前
2
0
Docker 安装 reids

0、mac上安装docker brew cask install docker 1、查询reidis docker search redis 2、拉取redis最新版本(也可以拉取指定版本,如:docker pull redis:4.0) docker pull redis 3、查看镜像 ...

moon888
42分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部