初学,问了类的继承问题

2019-03-25 13:42|来源: 网路

下面是eclipse自动生成的代码

public class Test extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}


Test类是继承Activity,main方法中的两个方法onCreate和setContentView都是继承的Activity中的方法,为什么一个要用super而另一个不用呢?都是执行父类里的方法吗?

相关问答

更多
  • 一个通用的例子是: 已经有一个类,叫做鸟 其有飞的方法/函数 然后你另外实现了一个 麻雀的 类 如果没有类的继承 那么你就要: 先去实现 飞的方法 然后再单独实现 麻雀 所具体的其他方法(和属性) 而此类似于 飞 的这个方法,很明显,是各种鸟都具有的,通用的方法 所以,为了避免,每一个其他的,某个鸟,都去分别实现一遍这样的方法 所以,弄了个基类,即基本的类,主要的类 其实现一些大家所共有的,通用的东西 包括很多方法 很多属性 然后其他子类 集成了此基类后 就不用再啰嗦地,重复地,去重新实现一遍那些基本的方法 ...
  • 你必须在Equilateral的__init__方法中显式调用父类Triangle的__init__方法。
  • # -*- coding:utf-8 -*- class FooParent(object): def __init__(self): self.parent = "I \'m the parent." print "Parent" def bar(self, message): print message, "from Parent" class Foochild(FooParent): def __init__(self): FooParent.__init__(self) print "Child" ...
  • 不可能的,就算再发布10个大版本也不能将Java这个从诞生就设置好的规定颠覆,接口完美解决多继承,而且更代码更简洁优美
  • 我会说你用函数填充了类定义。 看起来应该更像这样: class Test(object): def __init__(self): self.a = 20 self.b = 30 if __name__ == '__main__': test_instance = Test() 和 from class1 import Test class Test2(Test): def e(self): print self.a ...
  • 如果你这样做: if (itemInfo instanceof ItemInfo) { System.out.println("OK!"); } 你当然会看到"OK!" 因为FolderInfo是ItemInfo的子类 - 所以FolderInfo也是一个ItemInfo对象。 继承意味着从子类到超类有一个“是”的关系 - 参见Liskov替代原则 。 If you do this: if (itemInfo instanceof ItemInfo) { System.out.printl ...
  • 不可能像在C ++中那样从COM类继承。 但有一些解决方法: COM聚合 转发 COM聚合仅在您要将接口(带有实现)添加到现有COM类时才有用。 您无法拦截对聚合对象的调用。 转发意味着如果你有一个接口IExistingInterface ,你实现自己的实现IExistingInterface的类。 在您的类中,您保留对要“继承”的对象实例的引用。 在IExistingInterface的实现中,您可以根据需要将调用转发给“inherited”对象。 此方法可让您完全控制。 示例:(伪代码!) class ...
  • super (没有参数列表)使用传入的相同参数调用超类中的相同方法。如果要显式传递任何参数,则必须使用空参数列表: super() 。 请记住: super不是方法调用,它是关键字,关键字不必遵循常规方法调用评估规则。 这是其中一个差异。 对于方法调用, foo和foo()是等价的,它们都不传递任何参数。 对于super ,有一个区别: super()传递任何参数, super 转发参数。 现在,这是一个额外的转折:实际上,你没有传递任何参数来initialize ,所以他们如何传递...或者你呢? 好吧, ...
  • 这个问题并不是针对Objective-C的:对于所有面向对象的语言,何时使用继承的指南是相同的,它基于可替代性 ,由Liskov Substitution Principle概括: 如果S是T的子类型,则类型T的对象可以用类型S的对象替换 换句话说,只有当你可以说“{derived} 是 {base}>”时才使用继承; 当您为“{owner} 有一个 {something}”建模时,请使用合成 学生是一个人 - 继承 汽车是一种载体 - 继承 人有房子 - 组成(ivar或财产) 汽车有(n)发动机 - 组 ...
  • 因为类定义是可执行语句 。 在类的主体内(但在函数定义之外)的任何代码将在运行时执行。 如果您想要只在类对象实例化时才运行的代码,请将其放入__init__类方法中。 请注意, 有些教程会导致错误,这无疑会增加混淆: 定义一个类时不会运行代码 - 只是简单地创建函数和变量。 这是完全错误的。 Because a class definition is an executable statement. Any code within the body of the class (but outside of ...