标签: super

可可祖父

是否可以访问对象超类(或祖父)的超类方法?

例如:

GrandFatherObject : NSObject
SuperObject : GrandFatherObject
SelfObject : SuperObject
Run Code Online (Sandbox Code Playgroud)

来自SelfObject:

- (void)overriddenMethod
{
  // For Self
  someCode();

  // For Parent
  [super overriddenMethod];

  // For GrandParent
  ???
}
Run Code Online (Sandbox Code Playgroud)

我只能访问SelfObject(无法修改SuperObject或GrandFatherObject)

cocoa objective-c super

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

在Java中,this/super关键字是否可以表示除类/枚举之外的任何内容?

我注意到了:

class A {
    ClassB b = new ClassB() { // anonymous class
        /* some expression using this */
    }
}
Run Code Online (Sandbox Code Playgroud)

每当我this在匿名类中使用关键字时,都会this引用封闭的外部类/枚举而不是匿名类.

这是否意味着this永远不能代表一个匿名类?只是"正常"的类和枚举?

还可以thissuper代表一个界面?

java this super anonymous-class

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

派生类的python构造函数

class baseClass():
  def __init__(self,mark,name):
    self.mark = mark
    self.name = name

class derivedClass(baseClass):

b1 = derivedClass(name='Jibin')
print b1.name
Run Code Online (Sandbox Code Playgroud)

这是我的代码最初和它工作正常.

(注意:我无权访问baseClass)

但后来我不得不通过一个附加的属性rankderivedClass.所以我编辑这样的代码.

class baseClass():
  def __init__(self,mark,name):
    self.mark = mark
    self.name = name

class derivedClass(baseClass):
  def __init__(self,rank):
    self.rank = rank 

b1 = derivedClass(name='Jibin')
print b1.name
Run Code Online (Sandbox Code Playgroud)

这导致了错误 __init__() got an unexpected keyword argument 'name'

这是预期的__init__,derivedClass因为没有争论name.

我不想额外的参数添加name__init__derivedClass实时b'cos baseClass有十个参数,而不是2(标志,名称),如果我给他们都作为附加参数 derivedClass,我会搞乱参数列表.

注意:我知道使用baseClass.__init__(self)或初始化baseClasssuper(derivedClass, self).__init__()

python base-class derived-class super

3
推荐指数
1
解决办法
9788
查看次数

为什么我的Python继承/超级示例不起作用?

以下为什么不工作:

class CTest(tuple):
    def __init__(self,arg):
        if type(arg) is tuple:
            super(CTest,self).__init__((2,2))
        else:
            super(CTest,self).__init__(arg)
a=CTest((1,1))
print a
Run Code Online (Sandbox Code Playgroud)

输出是(1,1),而我期望看到(2,2).

另外,为什么我会得到弃用警告该对象.init()不带参数?我该怎么做呢?

python inheritance super

3
推荐指数
1
解决办法
315
查看次数

在OOP PHP中$ this->和parent ::之间有什么不同?

我编写这样的代码给你一个例子

这是使用"$ this->"

<?php
class A{
    public function example(){
        echo "A";
    }
}

class B extends A{
    public function example2(){
        $this->example();
    }
}

$b = new B();

echo $b->example2();
?>
Run Code Online (Sandbox Code Playgroud)

这是使用父::

<?php
class A{
    public function example(){
        echo "A";
    }
}

class B extends A{
    public function example2(){
        parent::example();
    }
}

$b = new B();

echo $b->example2();
?>
Run Code Online (Sandbox Code Playgroud)

在OOP PHP中$ this->和parent ::之间有什么不同?

php oop inheritance super

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

Python 2.3调用超类方法

在以下Python 2.3脚本中调用基类函数时遇到问题.在审阅这篇文章后:

从Python中的子类调用父类的方法?

我生成了这小段代码:

class Base(object):

    def func(self):
        print "Base.func"

class Derived(Base):

    def func(self):
        super(Base, self).func()
        print "Derived.func"

Derived().func()
Run Code Online (Sandbox Code Playgroud)

上面的代码生成此错误:

Traceback (most recent call last):
  File "py.py", line 13, in ?
    Derived().func()
  File "py.py", line 10, in func
    super(Base, self).func()
AttributeError: 'super' object has no attribute 'func'
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

python derived-class super superclass

3
推荐指数
1
解决办法
8017
查看次数

从孙子类调用超类构造函数,调用父或祖父项构造函数?

当使用来自二级子类的超类构造函数时,它是否将参数传递给祖父项构造函数或直接父构造函数?

//top class
public First(type first){
  varFirst = first;
}

//child of First
public Second(type second){
  super(second); //calls First(second)
}

//child of Second
public Third(type third){
  super(third); //calls First(third) or Second(third)?
}
Run Code Online (Sandbox Code Playgroud)

java inheritance constructor super constructor-overloading

3
推荐指数
1
解决办法
1300
查看次数

为什么尽管使用了super关键字,但派生类方法仍未从基类中调用重写方法?

我有三个名为Human.javaSuperhero.javaRun.java的类。超级英雄扩展人类和方法介绍()被覆盖在超级英雄与调用父类的介绍() 。但是,当我制作一个超级英雄对象并调用Introduction方法时,它不会打印基类方法的返回值。怎么了?提前致谢。

人.java

public class Human implements Comparable<Human> {
        private int age;
        private String name;

        public Human(String givenName, int age) {
            this.name = givenName;
            this.age = age;
        }

        public String getName() {
            return name;
        }

        public int getAge() {
            return age;
        }

        public String introduce() {
            return "Hey! I'm " + name + " and I'm " + age + " years old.";
        }

        @Override
        public int compareTo(Human H1) {
            if(this.getAge() …
Run Code Online (Sandbox Code Playgroud)

java inheritance overriding super

3
推荐指数
1
解决办法
75
查看次数

超级之前的java调用方法

假设我有一个超类,它的构造函数中有3个参数,我继承了这个类,它还有一个带有3个参数的构造函数,我想调用超类构造函数,但之前我想在子类上做一些逻辑,我可以调用一个接收这3个参数的静态方法,但我只需返回一个,所以这就是我提出的解决方案

public class someClass extends  SuperClass {
    public someClass(int a,int b,int c) {
         super(func(a,b,c),b,c);
    }
    public static int func(int a,int b,int c){
        //usage a b c
        return a;
    }
}
Run Code Online (Sandbox Code Playgroud)

它似乎有点难看,我想知道是否有更好的解决方案自己使用参数然后定期调用超级.请注意,我无法更改超类或子类的用法,因此无法更改工厂设计模式

java constructor super

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

Python 3.6:我想念一些泛型打字超链接继承

首先,我运行以下代码,这真的很好:

class Monster:
    def __init__(self):
        self._can_do = []
        print("created a monster")
        super().__init__()

class Race(Monster):
    """ all races must derive from this """
    def __init__(self):
        super().__init__()
        print("created a race x")

class Human(Race):
    def __init__(self):
        super().__init__()
        self._can_do.append("Do nothing special !")
        print("created a human")

class Elf(Race):
    def __init__(self):
        super().__init__()
        self._can_do.append("Avoid sleep")
        print("created an elf")

class Class:
    """ all classes must derive from this """
    def __init__(self):
        super().__init__()
        print("created a class x")

class Fighter(Class):
    def __init__(self):
        super().__init__()
        self._can_do.append("Hit hard")
        print("created a fighter")

class Wizard(Class): …
Run Code Online (Sandbox Code Playgroud)

python generics inheritance typing super

3
推荐指数
1
解决办法
83
查看次数