Пожалуйста, проведите меня по этой концепции - PullRequest
1 голос
/ 30 августа 2010

Я столкнулся с этим вопросом во время одного из недавних интервью:

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, какой метод класса будет вызывать? Зачем ? и как называется это понятие в упс?

Ответы [ 2 ]

5 голосов
/ 30 августа 2010

Будет вызываться getname в class3.

Это называется Метод сокрытия

Выдержка из ссылки

Проще говоря, если метод не переопределяет производный метод, он скрывает его. Скрытый метод должен быть объявлен с использованием нового ключевого слова.

2 голосов
/ 30 августа 2010

Вызов выполняется по интерфейсу, в данном случае Class1.

Объект obj имеет два метода getname: один в интерфейсе Class1 и один в интерфейсе Class3. В этом случае вызывается тот, что в интерфейсе Class1, но реализация этого метода из интерфейса class1 была переопределена в Class2, и поскольку объект reel имеет класс Class3, он возвращает реализацию, выполненную в class2.

Окончательный ответ - Class2

В ООП это называется «полиморфизм».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...