Когда мы переопределяем метод, разве мы не переопределяем весь метод? Я попытался переопределить java.ОУ.Контейнер.красить
У меня есть вопрос о переопределении. Я думал, что переопределение метода - это переписывание этого метода. Но, пока я изучал, как это сделать, у меня появились сомнения. Предположим, что я написал следующий код:
import java.applet.Applet;
import java.awt.Graphics;
public class guitryings_2 extends Applet{
public void paint( Graphics g )
{
g.drawString("Hi", 25, 75);
showStatus("Deneme");
}
}
Если метод paint включает только g. drawString ("Hi", 25, 75); и showStatus не существует, я получаю сообщение "апплет запущен".
Если override означает переписывание всего метода, когда я пишу только g. drawStrings без, это означает, что я не определил ни одной строки, которая будет показано ниже. Так не должен ли текст "апплет запущен" исчезнуть?
1 ответ:
Фактически, вы переопределяете
java.awt.Container.paint(Graphics g)
, поскольку ниApplet
, ни какой-либо класс в иерархии доContainer
не обеспечивают своей собственной реализацииpaint()
.Это метод, который вы переопределяете (и, да, методы всегда переопределяются в целом - вы не можете переопределить только часть метода. Единственное, что вы можете сделать, это вызвать переопределенный метод, например
super.paint(g)
).Однако,
java.awt.Container.paint()
не содержит какого-либо конкретного кода апплета, следовательно, сообщение, которое вы видите (Applet started
), очевидно печатается контейнером апплета - например, браузером (который все еще имеет основной контроль над своей строкой состояния) или средством просмотра апплетов.В качестве дополнительного замечания обратите внимание, что апплеты устарели, а некоторые браузеры уже списали необходимые собственные API для поддержки апплетов вообще.