为什么findViewByID可以在没有super关键字的情况下调用

时间:2016-10-26 23:18:04

标签: java android

我是java和android编程的新手。据我所知,findViewById是对父类和I&#39中定义; M只是好奇为什么findViewById方法可以在不子类super的关键字调用

2 个答案:

答案 0 :(得分:0)

super关键字是指SuperClass(父类)实施,因此当您致电super.findViewById(...)时,您正在访问SuperClass方法实施,并且因为您的SubClass不会覆盖此方法; super.findViewById(...)findViewById(...)相同。

但是如果你覆盖它会产生影响。 这是一个例子:

class MyActivity extends Activity{

   void onCreate(....){
    View fromParentView = super.findViewById(...);
    View fromThisView = findViewById(...);
  }

  View findViewById(int resId){
    throw new IllegalArgumentException();
  }
}

这第一个fromParentView将正常运行,但fromThisView会抛出异常

请检查https://docs.oracle.com/javase/tutorial/java/IandI/super.html

答案 1 :(得分:-1)

如果不覆盖子类中的findViewById方法,superthis在Activity类的范围内是等效的。

您可以执行this.findViewById()ActivityName.this.findViewById(),但这是多余的,除非在匿名类中(即您应该使用ActivityName.this,但这不属于问题)

要问的相关问题:为什么setContentView不需要super