当前位置: 首页 > 知识库问答 >
问题:

调用放置在另一个类中的另一个函数中的函数

隗新霁
2023-03-14

我不明白为什么下面的代码会打印两次。我以为应该是个人和学生。当通过“a”对象调用printPerson()内部的getInfo()时,为什么要调用Person类内部的一个,为什么不调用Student类中的一个?提前谢谢。

class deneme{
     public static void main(String[] args) {
        Person b = new Person();
        b.printPerson();
        Student a = new Student();
        a.printPerson();
    }
}

class Student extends Person {
     public String getInfo() {
        return "Student";
    }

 }

class Person{

     private String getInfo() {
        return "Person";
    }

     public void printPerson() {
        System.out.println(getInfo());
    }
}

共有2个答案

锺离嘉容
2023-03-14

我想那是因为人。getInfo()是私有的,您不能重写私有方法,因此a.printPerson()实际上会调用它自己的getInfo()。始终使用@override注释要覆盖的方法;如果在父类中找不到要重写的方法,编译器将抛出错误
如果你想成为人。getInfo()对其他类是私有的,但仍要覆盖它,只需将其设置为受保护的。

计弘
2023-03-14

您试图重写私有方法。这是不可能的。有关详细信息,请参见java中的重写“private”方法。因为学生看不到人。getInfoJava假定您正在声明一个新方法。

如果您将getInfo公开,您会发现打印的是学生

这是一个很好的论据,可以在打算覆盖超类方法的任何方法之前使用@Override注释。它不仅仅是文档——它可以通过让IDE发出警告来避免细微的错误。

 类似资料:
  • 问题内容: 我可以在python3.2的全局范围内调用嵌套在另一个函数内的函数吗? 这是从外部func1()调用func2()的一种方法吗? 问题答案: 否,除非您返回该函数: 甚至

  • 我定义了一个名为marger的函数来查找两个参数(num1、num2)之间的较大数。现在,我想在另一个名为“最大”的函数中使用这个函数,这个函数获得一个数组并返回该数组的最大个数,但我被卡住了。有人能帮我吗?下面是我的代码:

  • 问题内容: 我在下有两个文件,另一个在程序包中包含一些功能的文件称为函数。 我的问题是:如何从中调用函数? 文件1:main.go(位于MyProj / main.go中) 文件2:functions.go(位于MyProj / functions / functions.go中) 问题答案: 您可以通过包的导入路径导入包,并通过包名引用其所有导出的符号( 以大写字母 开头的符号),如下所示:

  • 问题内容: 这是面试中提出的问题。如果一个类在Java中何时有多个构造函数,我们可以从另一个构造函数调用另一个函数吗? 问题答案: 可以,我知道的语法是 您还可以通过以下方式调用超类的构造函数 这两个调用只能作为构造函数中的第一条语句完成(因此,您只能在执行其他任何操作之前调用另一个构造函数)。

  • 问题内容: 我无法从另一个类Menu.swift调用GameViewController.swift中的函数。我这样调用该函数: 这是我要调用的函数: } 我在菜单类内的GameViewController.showLeaderboard()行中出现编译器错误“调用中的参数#1缺少参数”,但我不理解编译器期望的参数类型,因为我不需要任何声明就声明了该函数参数。 谢谢 问题答案: 在您定义为方法而不

  • 我正在尝试创建一个21点模拟器。在向玩家和庄家发牌之前,我需要洗牌。是一个无效函数,是类中的卡类型。职业存储从职业中发出的牌。在游戏开始时,我需要向玩家和庄家发两张牌。当我尝试在类访问 的成员函数时,我收到错误消息“调用不带对象参数的非静态成员函数”。调用成员函数的正确方法是什么?我真的对语法感到困惑。