2016-01-25 2 views
-1
public abstract class demo { 
demo() 
{ 

} 
public void display(){System.out.println("this is from abstract class");} 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    demo s=new demo(){ 
     public void display(){System.out.println("this is demo constructor");} 
    }; 
    s.display(); 

} 

} 

В коде выше я попытался создать анонимный класс, который расширяет демонстрационный класс и переопределить функцию дисплея, но я получаю некоторые error.The выше кода дает мне ошибку в первом что «демо-версия типа уже определена». Я не понимаю, почему это дает эту ошибку.не в состоянии понять ошибку в коде

+1

Скорее всего, у вас есть другой файл в вашем проекте, содержащий класс с тем же именем. – yole

+0

Чтобы добавить к тому, что упоминал @yole: он отлично работает на Java 8u65 (oracle) – Augusto

ответ

0

Код хорошо работает. Я предполагаю, что проблема в том, что у вас уже есть класс demo, определенный где-то в одном пакете (здесь, по умолчанию, я думаю, что это не очень хорошая практика).

Кроме того, Java следует некоторым соглашениям. Например, имена классов должны начинаться с прописного. Вот собственно версия кода:

public abstract class Demo{ 

    public Demo(){} 


    public void display(){ 
     System.out.println("this is from abstract class"); 
    } 


    public static void main(String[] args){ 
     Demo s = new Demo(){ 
      public void display(){ 
       System.out.println("this is demo constructor"); 
      } 
     }; 
     s.display(); 
    } 
} 

Как и в сторону, здесь abstract ключевое слово не нужно. Обычный класс имел бы такой же эффект. abstract просто мешает кому-либо создавать объект Demo ...

+0

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

0

Это конфликт имен; два класса с тем же именем в одном пакете. Я бы предложил добавить имя пакета, чтобы удалить конфликт имен таким образом в начале вашего файла (перед любым импортом):

package com.test.demo 
Смежные вопросы