Oop 是否有任何编程语言可以重写一个包含两个类的方法?

Oop 是否有任何编程语言可以重写一个包含两个类的方法?,oop,Oop,例如,如果类A、类B继承A、类C继承B,那么是否有任何编程语言可以让类C重写类A的方法,即使类B不重写它 class A { method() {} } class B extends A{ } class C extends B { //override method from A method(){} } 是的,它是非常普通的情况,是.java,爪哇是.U/P> < P>。你可以在大多数的(如果不是所有的OO语言)中做到这一点,例如在C++和C++中。当然,如果你不是所有的

例如,如果类A、类B继承A、类C继承B,那么是否有任何编程语言可以让类C重写类A的方法,即使类B不重写它

class A {
  method() {}
}

class B extends A{
}

class C extends B {
  //override method from A
  method(){}
}

是的,它是非常普通的情况,是.java,爪哇是.U/P> < P>。你可以在大多数的(如果不是所有的OO语言)中做到这一点,例如在C++和C++中。当然,如果你不是所有的OO语言,你可以在大多数的OO语言中做到这一点,例如java和爪哇。

class A
  def hello
    puts "hello from class A"
  end
end

class B < A
end

class C < B
  def hello
    puts "hello from C"
  end
end

B.new.hello
C.new.hello

此ruby代码正是您想要的:

class A
  def hello
    puts "hello from class A"
  end
end

class B < A
end

class C < B
  def hello
    puts "hello from C"
  end
end

B.new.hello
C.new.hello
C为一

public class A
{
    virtual public int retval(int x)
    {
        return x; 
    }
}
public class B : A
{

}
public class C : B
{
    public override int retval(int x)
    {
        return 3; 
    }
}

class Program
{

    static void Main(string[] args)
    {
        A a  = new C();
        Console.WriteLine(a.retval(2).ToString());

    }
}
C为一

public class A
{
    virtual public int retval(int x)
    {
        return x; 
    }
}
public class B : A
{

}
public class C : B
{
    public override int retval(int x)
    {
        return 3; 
    }
}

class Program
{

    static void Main(string[] args)
    {
        A a  = new C();
        Console.WriteLine(a.retval(2).ToString());

    }
}

我认为,如果所有模块都被重新编译,大多数通用语言都会毫不困难地实现这一点。如果在编译子方法时将重写添加到没有重写的中级类,则在某些情况下(包括C和vb.net)会出现问题。在这种情况下,如果未重新编译子类,则对其父方法的调用可能会绕过中级类,因为在编译子过程时,这些中级类没有重写。

我认为,如果所有模块都重新编译,大多数通用语言都会很容易地允许这样做。如果在编译子方法时将重写添加到没有重写的中级类,则在某些情况下(包括C和vb.net)会出现问题。在这种情况下,如果未重新编译子类,则对其父方法的调用可能会绕过中级类,因为在编译子过程时,这些中级类没有重写。

Yes。我以为每种OO语言都能让你这么做……事实上,我不认识任何人,只是误解了我的书。是的。我以为每种OO语言都能让你这么做……事实上,我不认识任何人,只是误解了我的书。