2014-08-30 3 views
-6

Вот код Подкласс:Подкласс метод не унаследовав от Superclass

import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 
import java.util.Scanner; 
public class deleteAfter extends BeginAgain{ 

public static void main(String[] args){ 
super.printed() 
//I want to inherit the "printed()" method from my superclass, but 
//when I type "super.printed()" in my subclass's main method I get an error message that says 
//"Cannot use super in a static context" 
//what am I doing wrong? 
//Is it a compiler error or am I using "super" the wrong way? 

}; 
} 

Вот ссылка на суперкласс (BeginAgain.java) Я положил внутри JSfiddle: http://jsfiddle.net/72cYy/70/

Может быть, есть что-то не так с суперкласса, который может вызвать проблему.

+2

Я могу сказать вам, что вы ошиблись ... вы отметили вопрос Java как C++ – jpw

ответ

3

Вы не можете вызвать нестатический метод из статического метода.

Вы можете позвонить ему, создав экземпляр первым.

public static void main(String[] args){ 
    deleteAfter instance = new deleteAfter(); 
    instance.printed(); 
} 

Вам не нужно ключевое слово super.

Вам нужно только супер ключевое слово, если вы хотите продлить реализацию метода printed в вашем подклассе:

public void printed() { 
    super.printed(); 
    // some additional logic 
} 
+0

спасибо, но я видел несколько примеров используют его таким образом, включая это видео https://www.youtube.com/watch?v=fs6bjAKqzYE – user3081098

+0

@ user3081098 вам нужен super.method(), только если вы находитесь внутри метода() и хотите вызвать тот же метод в суперклассе. И это не работает в статике. – eckes

+0

@eckes спасибо :), что прояснил все – user3081098

0

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

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