标签: superclass

将项目导入Eclipse后,"必须覆盖超类方法"错误

任何时候我必须将我的项目重新导入Eclipse(如果我重新安装Eclipse,或者更改了项目的位置),几乎所有重写的方法都没有正确格式化,导致错误:

该方法必须覆盖超类方法

值得注意的是,这是Android项目 - 无论出于何种原因,方法参数值并不总是填充,所以我必须自己手动填充它们.例如:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

    //These arguments have their correct names
    public void onCreateContextMenu(ContextMenu menu, View v, 
                                    ContextMenuInfo menuInfo) {                 
    }

});
Run Code Online (Sandbox Code Playgroud)

最初将填充如下:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

    //This methods arguments were not automatically provided    
    public void onCreateContextMenu(ContextMenu arg1, View arg2,
                                    ContextMenuInfo arg3) {
    }

});
Run Code Online (Sandbox Code Playgroud)

奇怪的是,如果我删除我的代码,并让Eclipse自动重新创建方法,它使用我已经拥有的相同参数名称,所以我真的不知道问题在哪里,除此之外它自动格式化方法我.

这需要手动重新创建所有重写的方法,这变得非常痛苦.如果有人能解释为什么会发生这种情况或如何解决它......我会非常高兴.

也许这是由于我格式化方法的方式,这是在另一个方法的参数内?

java eclipse android overriding superclass

1223
推荐指数
11
解决办法
25万
查看次数

为什么是super.super.method(); Java不允许?

我读了这个问题并认为如果有人可以写的话很容易解决(不是没有它可以解决):

@Override
public String toString() {
    return super.super.toString();
}
Run Code Online (Sandbox Code Playgroud)

我不确定它在许多情况下是否有用,但我想知道为什么它不是,如果这样的东西存在于其他语言中.

你们有什么感想?

编辑: 澄清:是的,我知道,这在Java中是不可能的,我不会真的错过它.这不是我期望的工作,并且惊讶于编译错误.我刚才有了这个想法并想讨论它.

java superclass

347
推荐指数
7
解决办法
16万
查看次数

对于新式类,super()引发"TypeError:必须是type,而不是classobj"

以下使用super()引发了一个TypeError:为什么?

>>> from  HTMLParser import HTMLParser
>>> class TextParser(HTMLParser):
...     def __init__(self):
...         super(TextParser, self).__init__()
...         self.all_data = []
...         
>>> TextParser()
(...)
TypeError: must be type, not classobj
Run Code Online (Sandbox Code Playgroud)

StackOverflow上有一个类似的问题:Python super()引发TypeError,其中错误的解释是用户类不是新式类.但是,上面的类是一个新式的类,因为它继承自object:

>>> isinstance(HTMLParser(), object)
True
Run Code Online (Sandbox Code Playgroud)

我错过了什么?我怎么用super(),在这里?

使用HTMLParser.__init__(self)而不是super(TextParser, self).__init__()工作,但我想了解TypeError.

PS:Joachim指出,作为一个新式的实例并不等同于一个object.我多次反复阅读,因此我的困惑(基于object实例测试的新式类实例测试示例:https://stackoverflow.com/revisions/2655651/3).

python super typeerror superclass

331
推荐指数
6
解决办法
13万
查看次数

如何调用超级构造函数?

class A:
    def __init__(self):
        print("world")

class B(A):
    def __init__(self):
       print("hello")

B()  # output: hello
Run Code Online (Sandbox Code Playgroud)

在我使用超级构造函数的所有其他语言中隐式调用.如何在Python中调用它?我希望,super(self)但这不起作用.

python inheritance constructor class superclass

330
推荐指数
6
解决办法
24万
查看次数

测试Ruby类是否是另一个类的子类

我想测试一个类是否继承自另一个类,但似乎没有一个方法.

class A
end

class B < A
end

B.is_a? A 
=> false

B.superclass == A
=> true
Run Code Online (Sandbox Code Playgroud)

我想要的一个微不足道的实现是:

class Class
  def is_subclass_of?(clazz)
    return true if superclass == clazz
    return false if self == Object
    superclass.is_subclass_of?(clazz)
  end
end
Run Code Online (Sandbox Code Playgroud)

但我希望这已经存在了.

ruby inheritance subclass superclass

175
推荐指数
2
解决办法
3万
查看次数

为什么不自动调用超类__init__方法?

为什么Python设计者决定子类的__init__()方法不会__init__()像其他语言那样自动调用超类的方法?Pythonic和推荐的成语是否真的如下?

class Superclass(object):
    def __init__(self):
        print 'Do something'

class Subclass(Superclass):
    def __init__(self):
        super(Subclass, self).__init__()
        print 'Do something else'
Run Code Online (Sandbox Code Playgroud)

python inheritance delegation subclass superclass

146
推荐指数
7
解决办法
7万
查看次数

在python中继承和覆盖__init__

我正在阅读'Dive Into Python',并在关于类的章节中给出了这个例子:

class FileInfo(UserDict):
    "store file metadata"
    def __init__(self, filename=None):
        UserDict.__init__(self)
        self["name"] = filename
Run Code Online (Sandbox Code Playgroud)

然后,作者说如果要覆盖该__init__方法,则必须__init__使用正确的参数显式调用父级.

  1. 如果那个FileInfo班有一个以上的祖先课怎么办?
    • 我是否必须显式调用所有祖先类的__init__方法?
  2. 另外,我是否必须对我想要覆盖的任何其他方法执行此操作?

python overriding superclass

124
推荐指数
3
解决办法
17万
查看次数

什么时候需要显式调用超类构造函数?

所以说我有一个扩展超类的子类.在什么情况下我需要显式键入super()以运行超类构造函数?

我正在看一本关于抽象类的书中的例子,当他们用非抽象子类扩展它时,子类的默认构造函数是空白的,并且有一个注释表明将调用超类的默认构造函数.与此同时,我也看到过这里有人问题没有明确调用的情况super().

区别于从子类的默认/非默认构造函数调用超类的默认/非默认构造函数?

java constructor subclass superclass

95
推荐指数
2
解决办法
6万
查看次数

从超类中获取子类的名称

假设我有一个名为的基类Entity.在那个类中,我有一个静态方法来检索类名:

class Entity {
    public static String getClass() {
        return Entity.class.getClass();
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我有另一个类扩展.

class User extends Entity {
}
Run Code Online (Sandbox Code Playgroud)

我想获得User的类名:

System.out.println(User.getClass());
Run Code Online (Sandbox Code Playgroud)

我的目标是看到"com.packagename.User"输出到控制台,但是我将最终得到"com.packagename.Entity",因为Entity类是直接从静态方法引用的.

如果这不是一个静态方法,可以通过thisEntity类中使用关键字(即:)来轻松解决return this.class.getClass().但是,我需要这种方法保持静态.有关如何处理此问题的任何建议?

java class subclass super superclass

70
推荐指数
4
解决办法
8万
查看次数

如何在Dart中调用超级构造函数?

如何在Dart中调用超级构造函数?是否可以调用命名的超级构造函数?

inheritance constructor extends superclass dart

57
推荐指数
4
解决办法
2万
查看次数