![]() Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Статические внутренние классы (nested)
В объекте обычно внутреннего класса есть ссылка на объект внешнего класса. Поэтому мы создаем: obj.newInner(); У статического такой ссылки нет. Поэтому: - для его создания не нужен объект внешнего класса. - из объекта статического внутреннего класса нельзя обращаться к нестатическим членам внешнего (а только к статическим). - у нестатических внешних классов не может быть статических членов. У статических – могут.
class Outer2 { static class Inner2{} public static Inner2 createInner() { return new Inner2(); } }
Извне Outer2.Inner2 obj1 = new Outer2.Inner2; //похоже на пакет Outer2.Inner2 obj2 = new Outer2.createInner(); // порождение через метод
Пример: в библиотеке Java2D есть класс Rectangle2D – абстрактный. В нем есть 2 конкретных подкласса: - внутренние статические; - наследники внешнего.
Rectangle 2D.Float Rectangle 2D.Double
Создание:
Rectangle2D.Double d = new Rectangle2D.Double (10.0, 25.0, 22.5, 20.0);
А можно сделать upcasting
Rectangle2D d = new Rectangle2D.Double (10.0, 25.0, 22.5, 20.0);
Пример применения внутренних классов: говорящие часы:
import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import javax.swing.Timer;
class TalkingClock{ private int interval; private boolean beep;
public TalkingClock (int interval, boolean beep){ this.interval = interval; this.beep = beep; } _________________________________________________________________________
private class TimePrinter implements ActionListener { public void actionPerformed (ActionEvent event) { Date now = new Date (); System.out.println (“The time is ” + now); if (beep) Toolkit.getDefaultToolkit().beep(); } } ________________________________________________________________________
public void go (){ Забиваем Сайты В ТОП КУВАЛДОЙ - Уникальные возможности от SeoHammer
Каждая ссылка анализируется по трем пакетам оценки: SEO, Трафик и SMM.
SeoHammer делает продвижение сайта прозрачным и простым занятием.
Ссылки, вечные ссылки, статьи, упоминания, пресс-релизы - используйте по максимуму потенциал SeoHammer для продвижения вашего сайта.
Что умеет делать SeoHammer
— Продвижение в один клик, интеллектуальный подбор запросов, покупка самых лучших ссылок с высокой степенью качества у лучших бирж ссылок. — Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта. — Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы). — SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание. SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение ActionListener listener = new TimePrinter (); Timer t = new Timer (interval, listener); t.start (); } } ________________________________________________________________
public class TalkingClockTest { public static void main (String [] args) { TalkingClock clock = new TalkingClock (200, true); clock.go (); JoptionPane.showMessageDialog (null, “Quit? ”); System.exit (0); } }
Вариант с анонимным внутренним классом
import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import javax.swing.Timer;
class TalkinClock { public void go(int interval, final boolean beep){ ActionListener listener = new ActionListener(){ public void ActionPerformed(ActionEvent event) { Date now = new Date(); System.out.println(“The time is” + now); if (beep) Tookit.getDefaultToolkit().beep(); } }; Timer t = new Timer(interval, listener); t.start; }//go() }
public class AnonymusTalkingClockTest { public static void main (String [] args) { TalkingClock clock = new TalkingClock(); clock.go (1000, true); JoptionPane.showMessageDialog(null, “Quit? ”); System.exit (0); } }
Тема 11
|