2015-05-11 2 views
-2

В соответствии с java 7 упоминается, что мы можем создать экземпляр производного класса, используя базовый класс. но ее не работает я пытаюсь реализовать эту концепцию , так что я уже мой код здесь ... пожалуйста, предоставьте мне решение и решить эту проблему .... это ошибкаэкземпляр дочернего класса дает ошибку

class A 
{ 
    public void show() 
    { 
      System.out.println("A class"); 
    } 
} 
class B extends A 
{ 
    public void display() 
    { 
      System.out.println("B class"); 
    } 
} 
class Demo 
{ 
    public static void main(String args[]) 
    { 
      B obj=new B(); 
      obj.display(); 
    } 
} 
+0

C: \ Users \ Lenovo \ Desktop \ html> javac Demo.java Demo.java:24: ошибка: не найден символ obj.display(); ^ Значок: метод display() местоположение: переменная obj типа A 1 ошибка –

+0

Уверены ли вы, что у вас есть B Bj = new B(); 'а не' A obj = new B(); '? – aioobe

+0

Он должен работать. –

ответ

0

Если obj имеет тип B, он не может указывать ваш код, так как B содержит метод display.

Однако, основываясь на сообщении об ошибке в ваш комментарий - method display() location: variable obj of type A - фактический код, вероятно:

A obj=new B(); 
obj.display(); 

Это не может компилировать, так как компилятор определяет, какие методы могут быть вызваны типом времени компиляции из obj , который является A. Поскольку A не имеет метод отображения, вы не можете назвать это, если вы не отбрасывают obj в B явно:

A obj=new B(); 
((B)obj).display(); 
+0

это пример того, как он работает, но что использует эту концепцию, о которой я упомянул .... –

+0

@RajeevRanjanSrivastava Если ваш базовый класс A будет содержать метод 'display', вы можете вызвать' obj.display () 'и он будет вызывать' '' '' '' 'метод' '. Это то, что переопределяет метод. Ваша переменная 'obj' может ссылаться на экземпляр любого класса, который расширяет A (или сам A), и тип выполнения определит, какой метод' display' будет выполнен. – Eran

+0

тогда в чем смысл этой линии A obj = new B(); –

0

проверить файл NAM е. убедитесь, что имя вашего файла - Demo.java ... Потому что, когда я компилирую и запускаю ваш код, он работает. попробуйте также проверить свой java-путь.

+0

Да, имя файла - Demo.java, и путь также установлен правильно ... –

Смежные вопросы