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

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



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

Test 5 Вопрос 1. В результате компиляции каких строк будет происходить ошибка компиляции: public class Main { public static void main(String[] args) {
Test 8 Вопрос 1. class Class1 { Class1(int i) { System.out.println("Class1(int)"); } public class Class2 extends Class1 { Class2(double d) { // 1 this((int)
Test 9 Вопрос 1. public class A { private String runNow() { return "High"; } static class B extends A { public String runNow() { return "Low"; } } public.
Test 14 Вопрос 1. class Main { public void method() { static class One { public One() { System.out.println("From one"); } } public static void main(String...
Test 10 Вопрос 1. public class Test implements Iterator { // 1 private List list = new ArrayList (); // 2 public void addList(T... ts) { Collections.addAll(list,
Test 17 Вопрос 1. public class TKO { public static void main(String[] args) { String s = "-"; Integer x = 343; long L343 = 343L; if (x.equals(L343)) s.
Test21 Вопрос 1. public class Test { void a1(Object... i){ System.out.println("[Object... i]"); } void a1(Integer... i){ System.out.println("[Integer...
Test 11 Вопрос 1. class HashTest { private static Set set = new LinkedHashSet (); public static void main(String[] args) { set.add("one"); set.add("two");
Test 13 Вопрос 1. public class StringTest { public static void main(String[] arg){ test(new String[] { null });} static void test(Object[] o){System.out.print(1);}
Test 6 Вопрос 1. Как можно уничтожить объект в Java? a)присвоить null всем ссылкам на объект b)вызвать Runtime.getRuntime().gc() c)вызвать метод finalize()
Test 16 Вопрос 1. class Clazz { { System.out.println("non-static init"); } public static void main(String a[]) { System.out.println("main"); Clazz ob1.
Test 3 Вопрос 1. 01:package test; 02: public class Test { 03: public static void main(String [] args) { 04: Test test = new Test(); 05: System.out.println(test.toString());}
Test15 Вопрос 1. class AClass { } public class Test { public static void main (String... args) { ArrayList a = new ArrayList (); AClass aaaClass = new.
Test 20 Вопрос 1. public class Main { public static void var(Integer x, int y){ System.out.println("Integer int"); } public static void var(Object... x)
Исключения в Java Макаревич Л. Г.. Исключения – это механизм взаимодействия между кодом, приведшим к ошибке, и кодом, обрабатывающим ошибку Исключение.
Test 12 Вопрос 1. public class Cast { public static void main (String[] args){ byte b = 128; int i = b; System.out.println(i); } } a)Во время выполнения.
Интерфейсы и наследование. Интерфейсы Объявление public interface OperateCar { // constant declarations, if any // method signatures int turn(Direction.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Практическое программирование на Java к.ф.-м.н. Козлов Дмитрий Дмитриевич Кафедра АСВК, Лаборатория Вычислительных комплексов.
Транксрипт:

Интерфейсы в Java

Интерфейсы Множественное наследование не допускается при помощи классов Допускается множественное наследование при помощи интерфейсов Интерфейсы допускают множественное наследование от других интерфейсов Интерфейс не может иметь объекты

Объявление интерфейсов [модификатор] interface имя{члены интерфейса} Модификаторы: public, по умолчанию Члены интерфейса: поля-константы с модификаторами public final static по умолчанию; методы с модификаторами public abstract по умолчанию. public interface Directions { int RIGHT=1; int LEFT=2; int UP=3; int DOWN=4; } public interface Moveable { void moveRight(); void moveLeft(); void moveUp(); void moveDown(); } Возможно множественное наследование интерфейсов. Для наследования используется ключевое слово extends public interface Drawable extends Colorable, Resizable {}

Реализация интерфейса public class StockApplet extends Applet implements StockWatcher {//... public void valueChanged(String tickerSymbol, double newValue) { if (tickerSymbol.equals(sunTicker)) {... } else if (tickerSymbol.equals(oracleTicker)) {... } else if (tickerSymbol.equals(ciscoTicker)) {... } } }

Пример иерархии интерфейсов автомобиль, грузовой, легковой, пикап interface Automobile {…} interface Car extends Automobile {…} class Truck implements Automobile {…} class Pickap extends Truck implements Car {…} или interface Automobile {…} interface Car extends Automobile {…} interface Truck extends Automobile {…} class Pickap implements Truck, Car {…}

Конфликт имен в интерфейсах interface A { int getValue();} interface B { double getValue();} interface A { int value=3; } interface B { double value=5.4; } class C implements A, B { public static void main(String s[]) { C c = new C(); // System.out.println(c.value); - ошибка! System.out.println(((A)c).value); System.out.println(((B)c).value); }

Реализация полиморфизма interface Voise { void voice(); } class Dog implements Voise { public void voice(){ System.out.println(gav-gav!);} } class Cat implements Voise { public void voice(){System.out.println(miaou-miaou!);} } public class Test { public static void main(String[] args) { Voise[] singer=new Voise[3]; singer[0]=new Dog(); singer[1]=new Cat(); singer[2]=new Dog(); for(int i=0; i

Определение констант class Timer implements Lights { private int delay; private static int light = RED; Timer(int sec) {delay = 1000*sec;} public int shift() { int count = (light++)%3; try { switch(count) { case RED: Thread.sleep(delay); break; case YELLOW: Thread.sleep(delay/3); break; case GREEN: Thread.sleep(delay/2); break; } }catch (Exception e) {return ERROR;} return count; } class TrafficRegulator { private static Timer t = new Timer(1); public static void main(String[] args) { for(int k=0; k

Наследование в интерфейсах public interface StockTracker extends StockWatcher { void currentValue(String tickerSymbol, double newValue); } Интерфейс компилируется в отдельный класс

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

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

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

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