Problem z klasą abstrakcyjną

0

Witam!

Mam klasę, która dziedziczy klasę abstrakcyjną:

import architecture.LocalFileSystem;
import java.io.*;


public class proxyFileSystem extends LocalFileSystem {
    
    @Override 
    public void logToFile(File logfile, String message)
    {

    }    
    
    @Override 
    public File getFile(java.lang.String filename) throws Exception
    {
        return new File(filename);
    }

}

Kompilator wywala błędy:

proxyFileSystem is not abstract and does not override abstract method getFile(java.lang.String) in architecture.LocalFileSystem. Jak widać w cytowanym kodzie utworzyłem metodę getFile(java.lang.String).

W linijkach o treści @Override kompilator wywala błąd: method does not override a method from its superclass.

Definicja metod abstrakcyjnych w klasie LocalFileSystem wygląda tak:

abstract void logToFile(File logfile, String message);
abstract File getFile(String filename) throws Exception;
0

Usuń adnotację. Czasami są jakieś dziwne buraki (po ostatniej aktualizacji javac się pojawiły!).

0

Bez @Override kompilator wciąż wywala błąd:

proxyFileSystem is not abstract and does not override abstract method getFile(java.lang.String) in architecture.LocalFileSystem.

0

Dziwne... wygenerowałem sobie takie coś:

import java.io.File;

public class App extends LocalFileSystem {

    @Override
    public void logToFile(File logfile, String message) {
    }

    @Override
    public File getFile(java.lang.String filename) throws Exception {
        return new File(filename);
    }
}

abstract class LocalFileSystem {

    public abstract void logToFile(File logfile, String message);

    public abstract File getFile(java.lang.String filename) throws Exception;
}

i działa. Sprawdź czy wszystkie nazwy itd są prawidłowe. Jeszcze pytanie jakie IDE?

0

A mi właśnie takie coś nie działa. Nazwy są dobre - dla pewności je przekleiłem, zamiast przepisywać. IDE to Netbeans 6.0.1

EDIT: kiedy zrobię obydwie klasy w jednym pliku to się kompiluje bez błędu. Ale ja to muszę mieć w osobnych plikach.

EDIT2: kiedy przeniosę klasę abstrakcyjną do tego samego pakietu co klasę dziedziczącą (bo są w różnych pakietach) również nie ma błędu.

0

Bo bo druga klasa ma zasięg pakietowy i nie będzie widoczna dla klasy z innego pakietu, jak chcesz mieć ją w innym pakiecie to dodaj modyfikator dostępu:

public abstract class LocalFileSystem {

    public abstract void logToFile(File logfile, String message);

    public abstract File getFile(java.lang.String filename) throws Exception;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1