Перекрытие и сокрытие - PullRequest
0 голосов
/ 17 декабря 2018

Может кто-нибудь объяснить, почему приведенный ниже код недействителен и выдает ошибку.

/* Java program to show that if static methods are redefined by 
   a derived class, then it is not overriding but hidding. */

// Superclass 
class Base { 

    // Static method in base class which will be hidden in subclass  
    public static void display() { 
        System.out.println("Static or class method from Base"); 
    } 

     // Non-static method which will be overridden in derived class  
     public void print()  { 
         System.out.println("Non-static or Instance method from Base"); 
    } 
} 

// Subclass 
class Derived extends Base { 

    // Static is removed here (Causes Compiler Error)  
    public void display() { 
        System.out.println("Non-static method from Derived"); 
    } 

    // Static is added here (Causes Compiler Error)  
    public static void print() { 
        System.out.println("Static method from Derived"); 
   } 

} 

1 Ответ

0 голосов
/ 17 декабря 2018

Это ошибка просто потому, что она определена как недопустимая.

Нельзя переопределить статический метод методом экземпляра :

(Метода экземпляра :) Ошибка времени компиляции, если переопределенный метод mA является статическим методом.

или скрыть метод экземпляра статическим методом :

Ошибка времени компиляции, если статический метод скрывает метод экземпляра.

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