Я не могу выполнить виртуальный вызов метода - PullRequest
1 голос
/ 04 января 2011

Это мой код:

class base1
{

}
class der1 extends base1
{
 public static void main(String []args)
 {
  base1 b=new der1();
  b.showTest();
 }
 public void showTest()
 {
 System.out.println("Hello i am a derive class");
 }

}

Ответы [ 2 ]

2 голосов
/ 04 января 2011

не скомпилируется.

вам нужно showTest() в базовом классе, чтобы сделать его компилируемым

base1 b = new der1 (); b.showTest ();

здесь b является ссылкой base, вам нужно showTest() в base во время компиляции, он проверит showTest() в base и во время выполнения из-за

base1 b=new der1(); он вызовет der1 версию showTest()

См. Также

1 голос
/ 04 января 2011

Метод showTest() определен в подклассе. Чтобы использовать его, вы должны:

1.- Объявить его в базовом классе

class base1 {
     public void showTest(){
     }
}

Или 2.- Объявить b как der1

public static void main( String [] args ) { 
    der 1 b = new der1();
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...