这些不同的任务如何改变输出

时间:2017-03-30 09:24:45

标签: java

class Feline {
public String type = "f ";
public Feline() {
    System.out.print("feline ");
}
}

public class Main extends Feline {
//public String type = "c ";   //Problem 1
public Main() {
    System.out.print("cougar ");
}
void go() {
    //String type = "d"; //Problem 2
    //type = "d ";             //Problem 3
    System.out.print(this.type + super.type + type);
}
public static void main(String[] args) {
    new Main().go();
}
}

输出:

评论问题1,2,3输出是猫科动物f f f

取消注释问题1输出是猫科动物c f c

取消注释问题2输出是猫科动物f f d

取消注释问题3输出是猫科动物d d d

1 个答案:

答案 0 :(得分:2)

主要超级是Feline,因为extend

  • 问题1,您更改了this.typetype,在这种情况下它们是相同的,但您不会更改super.type,它仍然是一个在Feline中定义。

  • 对于问题2和3,您只更改本地变量,而不是更改超级公开 {{1} }。

  • 在问题2发表评论而问题3未发表评论时,您正在更改公开 type变量,因为您没有声明本地变量,你没有type