public class Solution {
public static void main(String[] args) throws Exception {
EnglishTranslator englishTranslator = new EnglishTranslator();
System.out.println(englishTranslator.translate());
}
public static abstract class Translator {
public abstract String getLanguage();
public String translate() {
return "Я переводчик с " + getLanguage();
}
}
public static class EnglishTranslator extends Translator{ // Почему static??до этого в задачах создавали классы и вызывали их в main без static
public String getLanguage() {
return "английского";
}
public String translate() {
return "Я переводчик с " + getLanguage();}
}
}Dmitriy
23 уровень
Почему вдруг тут потребовалось сделать класс EnglishTranslator static?
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia VolkovaJava Developer в DXCMaster
30 октября 2020, 07:35полезный
Потому что это класс находится внутри класса Solution. Если он будет не static, то для создания его экземпляра обязательно нужно будет сначала создавать экземпляр класса Solution.
(Так же как и со статическими и нестатическими переменными или методами - статические можно использовать без создания экземпляра класса, не-статические - нет).
+1
Артем DivertittoSenior Android-разработчи в United TechMaster
30 октября 2020, 07:31полезный
Потому что метод getLanguage абстрактный, и его можно реализовать только в классах наследниках, если они не абстрактные. И таким образом можно сделать много наследников, и со всеми образаться как с Translator(полиморфизм)
+2