039_面向对象_12_方法的重写

Posted aeon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了039_面向对象_12_方法的重写相关的知识,希望对你有一定的参考价值。

一、概念部分

  a)方法的重写(override):在子类中可以根据需要对从基类中继承来的方法进行重写。
二、重写的特征 

  a)重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型。
  b)重写方法不能使用比被重写方法更严格的访问权限。(由于多态)

三、方法重写和方法重载的区别

  很多人问重写和重载什么区别? 他们两个完全是两回事。除了名字都带一个“重”字之外。
  方法重载指的是:同一个类中,一个方法名对应了多个方法(形参列表(参数个数,类型及顺序)不同)
  方法的重写指的是:子类重写了父类的方法!

四、演示示例

 

package edu.aeon.test;
/**
 * [说明]:测试继承及重写
 * @author aeon
 */
public class Animal {
    String eye;
    public void run() {
        System.out.println("跑跑!");
    }
    public void eat() {
        System.out.println("吃吃!");
    }
    public void sleep() {
        System.out.println("zzzzz");
    }
    public Animal() {
        System.out.println("创建一个动物!");
    }
}
class Mammal extends Animal {
    public void taisheng() {
        System.out.println("我是胎生");
    }
}
/**
 * 重写父类的run方法
 * @author aeon
 *
 */
class Bird extends Animal {
    @Override
    public void run() {
        //是否真的覆盖了父类的方法呢?没有、只是重写该方法的类重写了、何谈覆盖?
        super.run();
        System.out.println("鸟类既可以跑又可以飞呀!");
    }
    //还有其它自己独有的方法....
    public void eggSheng() {
        System.out.println("卵生");
    }
}
package edu.aeon.test;
/**
 * [说明]:测试重写
 * @author aeon
 */
public class Test {
    public static void main(String[] args) {
         Bird b = new Bird();
            b.run();
    }
}

测试结果截图:

  技术分享图片

 

 





以上是关于039_面向对象_12_方法的重写的主要内容,如果未能解决你的问题,请参考以下文章

29.Python面向对象类:主要讲初始化方法__init__,垃圾回收,继承&多继承,方法重写,super()函数

Java面试_君哥讲解笔记_java面向对象_12 java和C++的区别面向对象怎么理解重载和重写的区别构造器是否可以被重写静态变量和实例变量的区别

29.Python面向对象类:主要讲初始化方法__init__,垃圾回收,继承&多继承,方法重写,super()函数

5_面向对象-中之方法的重写

13_Java面向对象_第13天(staticfinal匿名对象内部类包修饰符代码块)_讲义

048_面向对象_21_抽象方法