java - 解释java程序的输出
问题描述
我认为输出应该是“cougar c f”,因为调用Cougar()
应该只打印 cougar 并且调用go()
应该打印 'c' forthis.type
和 'f' for super.type
,因为 super 关键字用于调用父类。任何人都可以验证这一点吗?
class Feline {
public String type = "f ";
public Feline() {
System.out.print("feline ");
}
}
class Cougar extends Feline {
public Cougar() {
System.out.print("cougar ");
}
void go() {
type = "c ";
System.out.print(this.type + super.type);
}
public static void main(String[] args) {
new Cougar().go();
}
}
解决方案
所以快速回答,输出将是
猫美洲狮 cc
现在的原因。
new Cougar()
将创建一个 instance Cougar
,因为 aCougar
是 a Feline
,Feline
的构造函数是在 的构造函数中调用的第一个东西Cougar
。这解释了“猫科美洲狮”。
public Cougar() {
System.out.print("cougar ");
}
实际上看起来像
public Cougar() {
super(); //printing "Feline"
System.out.print("cougar ");
}
现在,this.type
两者super.type
都访问在Feline
.
由于您分配"c"
给它,这解释了输出“c c”
推荐阅读
- java - 基于java 8流中的前一个元素进行过滤
- python - 将视频从 raspberri pi 流式传输到互联网
- c - C 从第 x 行到第 y 行读取文件
- google-apps-script - 仅将 onEdit 脚本限制为 SourceSheet
- python - 当我在 Mac 应用程序上的应用程序本身所在的文件夹中创建一个文件时,该文件在哪里?
- ruby-on-rails - Rails 和 ActionCable 本地主机上的 1.8 小时网络请求时间 / Heroku 上的高响应时间
- amazon-web-services - terraform apply 后自动运行命令
- javascript - 最佳实践 JS API (json) 数据使用、“模型”或 JSON - 性能、可维护性、资源
- python - 从熊猫数据框中的列名中删除时间戳
- reactjs - Electron、React 和 WebSockets 导致 WebSocket.Server 不是构造函数