请指导我这个oops的概念

时间:2010-08-30 11:49:46

标签: oop

在最近一次采访中我遇到了这个问题:

class1
{ 
  virtual getname();
  {//code here..}
}

class2:class1
{
  overrides getname();
  {//code here..}

}
class3:class2
{
  public new getname();
  {//code here..}

}

class4
{
  class1 obj=new class3();
  obj.getname();
}

现在在class4哪个类的方法会调用?为什么?什么叫oops这个概念?

2 个答案:

答案 0 :(得分:5)

getname中的class3将是唯一被调用的人。{/ p>

它被称为Method Hiding

摘自链接

  

简单地说,如果方法没有覆盖派生方法,它就会隐藏它。必须使用new关键字声明隐藏方法。

答案 1 :(得分:2)

对接口执行调用,在这种情况下,接口是Class1。

对象obj有两个方法getname:一个在Class1接口,一个在Class3接口。在这种情况下,Class1接口中的那个被调用,但是class1接口中的这​​个方法的实现已经在Class2中被覆盖,并且由于reel对象是Class3,它返回class2中的实现。

最后的答案是Class2

在OOP中,这被称为“多态性”。