为什么尽管使用了super关键字,但派生类方法仍未从基类中调用重写方法?

आनं*_*नंद 3 java inheritance overriding super

我有三个名为Human.javaSuperhero.javaRun.java的类。超级英雄扩展人类和方法介绍()被覆盖在超级英雄与调用父类的介绍() 。但是,当我制作一个超级英雄对象并调用Introduction方法时,它不会打印基类方法的返回值。怎么了?提前致谢。

人.java

public class Human implements Comparable<Human> {
        private int age;
        private String name;

        public Human(String givenName, int age) {
            this.name = givenName;
            this.age = age;
        }

        public String getName() {
            return name;
        }

        public int getAge() {
            return age;
        }

        public String introduce() {
            return "Hey! I'm " + name + " and I'm " + age + " years old.";
        }

        @Override
        public int compareTo(Human H1) {
            if(this.getAge() > H1.getAge())
                return 1;
            else if (this.getAge() < H1.getAge())
                return -1;
            else
                return 0;
        }
}
Run Code Online (Sandbox Code Playgroud)

超级英雄

public class Superhero extends Human {
    private String alterEgo;
    private int age;
    private String name;

    public Superhero(String givenName, int age, String alterEgo) {
        super(givenName, age);
        this.alterEgo = alterEgo;
    }

    public String getAlterEgo() {
        return alterEgo;
    }

    @Override
    public String introduce(){
        super.introduce();
        return  "I am also known as " + alterEgo + "!";
    }
}
Run Code Online (Sandbox Code Playgroud)

运行.java

public class Run {
    public static void main(String[] args) {
        Superhero superhero = new Superhero("Bruce", 26, "Batman");
        System.out.println(superhero.introduce());
    }
}
Run Code Online (Sandbox Code Playgroud)

Moh*_*uag 5

@Override
public String introduce(){
    super.introduce();
    return  "I am also known as " + alterEgo + "!";
}
Run Code Online (Sandbox Code Playgroud)

SuperHero类的describe方法将转储由调用返回的String传递给基本方法并返回"I am also known as " + alterEgo + "!"

您需要返回String基类的实现+ SuperHero-特定字符串返回的串联结果:

@Override
public String introduce(){
    return super.introduce() + "I am also known as " + alterEgo + "!";
}
Run Code Online (Sandbox Code Playgroud)