Встроенные классы в Java Макаревич Л. Г.. Разновидности встроенных классов Вложенные (Nested) классы Внутренние (Inner) классы Локальные классы Анонимные.

Презентация:



Advertisements
Похожие презентации
Интерфейсы в Java. Интерфейсы Множественное наследование не допускается при помощи классов Допускается множественное наследование при помощи интерфейсов.
Advertisements

1 Java 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ. 2 Интерфейсы Не являются классами Ни один из объявленных методов не может быть реализован внутри интерфейса.
1 Java 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ. 2 Интерфейсы Не являются классами Ни один из объявленных методов не может быть реализован внутри интерфейса.
1 © Luxoft Training 2012 Java: расширенные вопросы Модуль #8.
§ 22 Предпочитайте статические поля классов - другим.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
1 Классы в Java Ключевое слово class означает: Я говорю тебе, как выглядит новый тип объекта. Класс является базовым элементом объектно-ориентированного.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Java. Part 2. Спецификаторы доступа public private protected не указан – доступ в пределах пакета Могут использоваться перед классами, методами, полями.
Test 6 Вопрос 1. Как можно уничтожить объект в Java? a)присвоить null всем ссылкам на объект b)вызвать Runtime.getRuntime().gc() c)вызвать метод finalize()
Наследование Наследование – это отношение является между классами. class Person { string first_name; int birth_year;... } class Student : Person { float.
Программная инженерия Андрей Дмитриев ©
Практическое использование Java Макаревич Л. Г.. Инсталляция Java Документация в docs Прописать PATH (каталог bin в JSDK) Прописать CLASSPATH (путь к.
b5_java_s4
Java, каф.ОСУ, АВТФ1 Определение классов и методов Java- программа состоит из объектов различных классов, взаимодействующих друг с другом. Каждое.
НГТУ, каф. ВТ Наследование в С++ Макаревич Л. Г.НГТУ, каф. ВТ Наследование в С++ Макаревич Л. Г.
Кафедра ОСУ, Java 2007 Слайд 1 Определение классов и методов Java- программа состоит из объектов различных классов, взаимодействующих друг.
Лекция 2 Наследование Наследование в Java имеет тот же смысл, что и в С++. Однако наследование в Java осуществляется при помощи ключевого слова extends.
Дружественные функции Дружественные функции – это функции, объявленные вне класса, но имеющие доступ к закрытым и защищенным полям данного класса Дружественная.
Кафедра ЮНЕСКО по НИТ Объектная модель в Java Часть 2. Интерфейсы и внутренние классы, параметры метода.
Транксрипт:

Встроенные классы в Java Макаревич Л. Г.

Разновидности встроенных классов Вложенные (Nested) классы Внутренние (Inner) классы Локальные классы Анонимные классы Упрощение обработки событий Внимательность Внимательность Аккуратность Аккуратность

class Enclose {static private int a=88; static class Nested { static int i = 55; private int j; Nested(int q){j = q;} static void getI1() { System.out.println("static Nested class, i="+i+a); } void getI2() { System.out.println("Nested class,j="+ j); } Nested n = new Nested(88); static Nested sn = new Nested(99); static void getI1() { System.out.println("static Enclose class, sn.i="+sn.i); } void getI2() { System.out.println("Enclose class, n.j="+ n.j); } class NestedDemo { public static void main(String[] a) { Enclose.getI1(); Enclose ne = new Enclose(); ne.getI2(); Enclose.Nested en = new Enclose.Nested(666); en.getI1();//Enclose.Nested.getI1(); en.getI2(); } Вложенные классы К статическим полям внешнего класса можно обращаться из вложенного, даже если они private К полям вложенного класса можно обращаться из внешнего, даже если они private Создаются 3 класса, какие?

Вложенные интерфейсы Использование в стороннем классе Использование во вложенных классах верхнего уровня

class Encl { A aa = new A(); interface NestedInt { String s = "AAAAA"; void getI(); } static class Q implements NestedInt { public void getI() { System.out.println("StaticQQQQQQQQNested"+ s); } class A implements NestedInt { public void getI() { System.out.println("QQQQQQQQNested"+ s); } class My implements Encl.NestedInt { public void getI() { System.out.println("QQQQQQQQ"+ s); } public static void main(String [] a ) { Encl.Q m = new Encl.Q(); m.getI(); Encl e = new Encl(); e.aa.getI(); e.getI(); }

Внутренние классы public class e1 { private int rrr = 77; static class C//если static, то нельзя обращаться к нестатической rrr { private int i = 88; public int value() {return i /*+rrr*/;} } class D { private String label; D(String w){label = w;} String readLabel() { return label+ rrr;} } public void doIt(String aaa) { C c = new C(); D d = new D(aaa); System.out.println(d.readLabel()); } public static void main(String[] args) { e1 p = new e1(); p.doIt("aaaaaaaaaaaaaaaaa"); e1 p2 = new e1(); } Внутренние классы могут вызывать поля внешнего класса Доступ к элементам классов верхнего уровня

Локальные классы Создавать объект можно только в пределах блока, где локальный класс определен Локальные классы нельзя объявлять с модификатором static Объекты локального класса имеют доступ к: полям класса верхнего уровня final параметрам метода, где определен локальный класс Переменным, объявленным как final К другим переменным метода, содержащего локальный класс, нет доступа

interface D { String readLabel(); } public class e3 { private int y=33; public D dest(final String s) { class PD implements D { private String label; PD(String l ){label = l;} public String readLabel(){return label+y+s;}//без final ошибка } return new PD("qqqqq"); } public static void main(String str[]) { e3 ee = new e3(); D p = ee.dest("QQQQQQQQQQQ"); // здесь PD нельзя System.out.println(p.readLabel()); }

Анонимные классы Используется для одноразового использования объекта на основе класса без имени, если для такого класса не нужен конструктор Вместо конструкторов можно использовать блоки динамической инициализации Процесс создания объекта анонимного класса: Определить интерфейс или абстрактный или простой класс Создать объект по схеме new имя_класса_или_интерфейса { //тело анонимного класса переопределение некоего метода или нескольких }

// анонимный внутренний класс interface D { String readLabel(); } public class e5 { int rrrr = 86759; public D dest(final String str, final int qqq) // без final ошибка { return new D() { public String readLabel() { return label+" " + (rrrr+q);}// public обязательно String label = str; int q; { q = qqq; } };// обязательно ; } public static void main(String str[]) { e5 ee = new e5(); D p = ee.dest("QQQQQQQQQQQ", 1111); System.out.println(p.readLabel()); }

// анонимный внутренний класс interface D { } public class e5 { public static void main(String str[]) { new D(){ void getInfo(){ System.out.println("I am anonymous!"); } }.getInfo(); }