美文网首页
调用被子类重写的方法

调用被子类重写的方法

作者: 李霖神谷 | 来源:发表于2017-03-22 15:06 被阅读35次

在一般情况一下,子类可以调用父类的方法,因为子类继承父类,会获得父类的成员变量和方法,但父类不可以调用子类的方法,因为父类无从知道它将被哪一个子类继承。
但是有一种特殊情况,当子类方法重写父类的方法后,父类表面上只是调用自己的方法,但是该方法已经被子类方法重写了,随着上下文的改变,将会出现父类调用子类的情况。

class Animal{
    //desc实例变量保存对象toString方法的返回值
    private String desc;
    public Animal(){
        this.desc=getDesc();
    }
    public String getDesc(){
        return"Animal";
    }
    public String toString(){
        return desc;
    }
}
public class Wolf extends Animal{
    private String name;
    private double weight;
    public Wolf(String name, double weight) {
        
        this.name = name;
        this.weight = weight;
    }
    //重写getDesc方法
    @Override
    public String getDesc() {
        return "Wolf [name=" + name + ", weight=" + weight + "]";
    }
    public static void main(String[] args) {
        System.out.println(new Wolf("灰太狼",32.3));
    }
    
}

此处代码运行结果为Wolf [name=null, weight=0.0]。有人可能会问为什么不是"灰太狼",32.3?

相关文章

  • 04.继承中成员方法的特点

    继承中成员方法的特点&方法重写 A:子类中没有这个方法,调用父类的 B: 子类中重写了这个方法,调用子类的 方法的...

  • java你也安全了

    本类若想调用本类的方法,被调用方法需申明为static。顺便说,静态方法不能被重写,如果子类中有一个像重写父类静态...

  • 重写和重载

    子类重写父类方法:方法名相同,参数相同。该方法假如是 get()此时,在外部调用时,调用子类该方法 显示重写方法...

  • Java 的小白学习笔记八(面向对象-重写和重载)

    重写 子类对父类的允许访问的方法的实现过程重新编写 重写规则 1.子类想要调用父类被重写的方法,需要使用super...

  • 14-面向对象3 & 内存管理

    一、重写 1. 完全重写 重新实现从父类继承下来的方法,重写后,子类再调用这个方法的时候,就调用子类的 2. 保留...

  • Java之动态绑定与静态绑定

    1、当子类和父类存在同一个方法,子类重写了父类的方法,程序在运行时调用方法是调用父类的方法还是子类的重写方法呢?2...

  • python-面向对象——继承

    继承 可以多层继承,子类可以直接调用父类的父类的函数 重写 调用被重写的方法: 多继承 python支持多继承 所...

  • 接口 对象名=new 类名 和类名 对象名 =new 类名的区别

    接口。多态,子类继承父类,父类引用指向子类对象,可以调用子类重写的方法。后者可调用的方法多一些。

  • 对象多态性

    多态的原理是:当向上转型后,调用一个被重写的方法时,本该调用的是父类方法,但实际上却会动态地调用子类重写后的方法。...

  • 类的定义与继承

    类 类的继承 重写,子类可以重写父类的方法和属性 子类里,如果重写了父类的方法后,如果还想调用父类的方法,通过su...

网友评论

      本文标题:调用被子类重写的方法

      本文链接:https://www.haomeiwen.com/subject/cmyonttx.html