🗊Презентация Интерфейсы. (Лекция 4)

Нажмите для полного просмотра!
Интерфейсы. (Лекция 4), слайд №1Интерфейсы. (Лекция 4), слайд №2Интерфейсы. (Лекция 4), слайд №3Интерфейсы. (Лекция 4), слайд №4Интерфейсы. (Лекция 4), слайд №5Интерфейсы. (Лекция 4), слайд №6Интерфейсы. (Лекция 4), слайд №7Интерфейсы. (Лекция 4), слайд №8Интерфейсы. (Лекция 4), слайд №9Интерфейсы. (Лекция 4), слайд №10Интерфейсы. (Лекция 4), слайд №11Интерфейсы. (Лекция 4), слайд №12Интерфейсы. (Лекция 4), слайд №13

Вы можете ознакомиться и скачать презентацию на тему Интерфейсы. (Лекция 4). Доклад-сообщение содержит 13 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Интерфейсы

[модификатор] interface  ИмяНовогоИнтерфейса 
[extends  список Интерфейсов] 
{Тело интерфейса, состоящее из описаний абстрактных методов и констант}
Интерфейс позволяет иметь различные реализации методов в разных классах и обращаться через него к объекту.
Интерфейсы имеют следующие ограничения:
Модификатор доступа — могут быть только public или отсутствовать (тогда, поумолчанию, интерфейс доступен только членам пакета, в котором он объявлен).
 Методы — могут быть только абстрактными методами;
Поля — final, static (константы, не меняющие значений, такие спецификации для них назначаются автоматически, должны быть инициализированы постоянными значениями);
Сами интерфейсы — не могут иметь конструкторы и реализации методов.
Нельзя создать объект типа интерфейса (но можно использовать в качестве типа — интерфейсные ссылки).
Описание слайда:
Интерфейсы [модификатор] interface ИмяНовогоИнтерфейса [extends список Интерфейсов] {Тело интерфейса, состоящее из описаний абстрактных методов и констант} Интерфейс позволяет иметь различные реализации методов в разных классах и обращаться через него к объекту. Интерфейсы имеют следующие ограничения: Модификатор доступа — могут быть только public или отсутствовать (тогда, поумолчанию, интерфейс доступен только членам пакета, в котором он объявлен). Методы — могут быть только абстрактными методами; Поля — final, static (константы, не меняющие значений, такие спецификации для них назначаются автоматически, должны быть инициализированы постоянными значениями); Сами интерфейсы — не могут иметь конструкторы и реализации методов. Нельзя создать объект типа интерфейса (но можно использовать в качестве типа — интерфейсные ссылки).

Слайд 2





Интерфейсные константы

Интерфейсы можно использовать для импорта в различные классы совместно используемых констант.
public interface MyConstants 
         { 
public static final double price = 1450.00; 
public static final int counter = 5; 
         }
interface MyColors { 
    int RED = 1, YELLOW = 2, BLUE = 4; 
}
Описание слайда:
Интерфейсные константы Интерфейсы можно использовать для импорта в различные классы совместно используемых констант. public interface MyConstants          { public static final double price = 1450.00; public static final int counter = 5;          } interface MyColors { int RED = 1, YELLOW = 2, BLUE = 4; }

Слайд 3





Описание и реализация методов интерфейса
public interface Mylnterface 
         { 
abstract public void add(int x, int y); 
           void volume(int x,int y, int z); 
         } 
class Demo1 implements Mylnterface 		class Demo2 implements Mylnterface
{ 					{
public void add(int x, int y)			public void add(int x, int y)
          { 			                   {
System.out.println(      +(x+y)); 		System.out.println(      +(x*y));
          } 				  }

public void volume(int x, int y, int z) 		public void volume(int x, int y, int z)
          { 				{ 
System.out.println(      +(x*y*z)); 		System.out.println(      +(x-y-z));
          } 				}

public static void main(String args[]) 
          { 
 Mylnterface  d1= new Demo1(); 		 Mylnterface d2= new Demo2(); 
d1.add(10,20); 				 d2.add(10,20); 
d1.volume(10,10,10); 			 d2.volume(10,10,10); 
          } }
Описание слайда:
Описание и реализация методов интерфейса public interface Mylnterface          { abstract public void add(int x, int y); void volume(int x,int y, int z);          } class Demo1 implements Mylnterface class Demo2 implements Mylnterface { { public void add(int x, int y) public void add(int x, int y)           { { System.out.println(      +(x+y)); System.out.println(      +(x*y));           } } public void volume(int x, int y, int z) public void volume(int x, int y, int z)           { { System.out.println(      +(x*y*z)); System.out.println(      +(x-y-z));           } } public static void main(String args[])           { Mylnterface d1= new Demo1(); Mylnterface d2= new Demo2(); d1.add(10,20); d2.add(10,20); d1.volume(10,10,10); d2.volume(10,10,10);           } }

Слайд 4





Преобразование типов в интерфейсах
public interface Printable{
     void print();
}
public class Journal implements Printable {
     private String name;
      String getName(){ return name;     }
      Journal(String name){this.name = name;    }
    public void print() {
        System.out.printf("Журнал '%s'\n", name);
    }  
}
Printable p =new Journal("Хакер");
p.print();
         
// Интерфейс не имеет метода getName, необходимо явное приведение
String name = ((Journal)p).getName();
System.out.println(name);
Описание слайда:
Преобразование типов в интерфейсах public interface Printable{      void print(); } public class Journal implements Printable {      private String name;       String getName(){ return name;     }       Journal(String name){this.name = name;    }     public void print() {         System.out.printf("Журнал '%s'\n", name);     }  } Printable p =new Journal("Хакер"); p.print();           // Интерфейс не имеет метода getName, необходимо явное приведение String name = ((Journal)p).getName(); System.out.println(name);

Слайд 5






Методы по умолчанию в JDK 8 

interface Printable {
     default void print(){
     System.out.println("Неизвестное печатное издание");
    }
}
public class Journal implements Printable {
// метод print() можно в классе не реализовывать
    private String name;
  
    String getName(){
        return name;
    }
    Journal(String name){
          
        this.name = name;
    }
}
Описание слайда:
Методы по умолчанию в JDK 8 interface Printable {      default void print(){      System.out.println("Неизвестное печатное издание");     } } public class Journal implements Printable { // метод print() можно в классе не реализовывать     private String name;        String getName(){         return name;     }     Journal(String name){                    this.name = name;     } }

Слайд 6






Статические методы в интерфейсах JDK 8

interface Printable {
     
    void print();
     
    static void read(){
         
        System.out.println("Чтение печатного издания");
    }
}
public static void main(String[] args) {
         
    Printable.read();
}
Описание слайда:
Статические методы в интерфейсах JDK 8 interface Printable {           void print();           static void read(){                   System.out.println("Чтение печатного издания");     } } public static void main(String[] args) {               Printable.read(); }

Слайд 7





Вложенные интерфейсы
Можно вкладывать описание интерфейса внутрь описания класса или другого интерфейса. 
/описание класса
class SomeClass {
void MethodSomeClass(){}
 //описание вложенного интерфейса
interface SomeClassItf{
void SomeMethod();
} }
 
 //описание внешнего интерфейса
interface OuterInterface {
void OuterInterfaceMethod();
 //описание вложенного интерфейса
interface InnerInterface { 
void InnerInterfaceMethod();
} }
class A implements OuterInterface.InnerInterface, SomeClass.SomeClassItf {
… // реализация InnerInterfaceMethod и SomeMethod
}
Использование вложенного интерфейса идет через имя внешнего класса или интерфейса:
SomeClass.SomeClassItf si = new A();
si.SomeMethod();
OuterInterface.InnerInterface ii = new A();
ii.InnerInterfaceMethod();
Описание слайда:
Вложенные интерфейсы Можно вкладывать описание интерфейса внутрь описания класса или другого интерфейса. /описание класса class SomeClass { void MethodSomeClass(){}  //описание вложенного интерфейса interface SomeClassItf{ void SomeMethod(); } }    //описание внешнего интерфейса interface OuterInterface { void OuterInterfaceMethod();  //описание вложенного интерфейса interface InnerInterface { void InnerInterfaceMethod(); } } class A implements OuterInterface.InnerInterface, SomeClass.SomeClassItf { … // реализация InnerInterfaceMethod и SomeMethod } Использование вложенного интерфейса идет через имя внешнего класса или интерфейса: SomeClass.SomeClassItf si = new A(); si.SomeMethod(); OuterInterface.InnerInterface ii = new A(); ii.InnerInterfaceMethod();

Слайд 8





Наследование интерфейсов
//суперинтерфейс A
interface A {
 int a_value = 1;
 void A();
}
 //интерфейс B расширяет интерфейс А
interface B extends A{
 int b_value = 2;
 void B();
} 
 //интерфейс С расширяет интерфейс В
interface C extends B{
 int c_value = 3;
 void C();
}
class Test implements C{ . . . }
Test t = new Test();
 t.A();
 t.B();
 t.C();
Описание слайда:
Наследование интерфейсов //суперинтерфейс A interface A {  int a_value = 1;  void A(); }  //интерфейс B расширяет интерфейс А interface B extends A{  int b_value = 2;  void B(); }  //интерфейс С расширяет интерфейс В interface C extends B{  int c_value = 3;  void C(); } class Test implements C{ . . . } Test t = new Test();  t.A();  t.B();  t.C();

Слайд 9





Использование констант при множественном наследовании интерфейсов
public interface I1 {
    Double PI=3.14;
}
public interface I2 {
    Double PI=3.1415;
}
class C1 implements I1,I2 {
  void m1(){
    System.out.println("I1.PI="+ I1.PI);
    System.out.println("I2.PI="+ I2.PI);
  };
}
Для использования констант с одинаковыми именами из разных интерфейсов решением является квалификация имени константы именем соответствующего интерфейса
Описание слайда:
Использование констант при множественном наследовании интерфейсов public interface I1 { Double PI=3.14; } public interface I2 { Double PI=3.1415; } class C1 implements I1,I2 { void m1(){ System.out.println("I1.PI="+ I1.PI); System.out.println("I2.PI="+ I2.PI); }; } Для использования констант с одинаковыми именами из разных интерфейсов решением является квалификация имени константы именем соответствующего интерфейса

Слайд 10





Наследование интерфейсов и реализация интерфейсов
Описание слайда:
Наследование интерфейсов и реализация интерфейсов

Слайд 11





Использование переменных типа интерфейс
interface Interface0 {    int someField = 10;     String someMethod(); }
interface Interface1 {     int someField = 100;     String someMethod(); }
interface Interface2 extends Interface0{     int someField = 200;     String someMethod(); }
class SomeClass implements Interface1, Interface2 {
    public String someMethod() {    return "Метод";     }
}
public class Main {
	public static void main(String[] args) {
		SomeClass a = new SomeClass();
	 Interface1 I1=a;
	   System.out.println( a.someMethod() );                         	          // Метод
     //   System.out.println( a.someField );                               	        // ошибка
       System.out.println( ( (Interface1) a).someField );               	    // 100
        System.out.println( Interface1.someField );                      	     // 100
 	Interface2 I2=a;
       System.out.println( I2.someField );			 // 200
        System.out.println( I2.someMethod() );			 // Метод
        Interface0 I0=a;
        System.out.println( I0.someField );			 // 10
        System.out.println( Interface0.someField );		 // 10
	} 
}
Описание слайда:
Использование переменных типа интерфейс interface Interface0 { int someField = 10; String someMethod(); } interface Interface1 { int someField = 100; String someMethod(); } interface Interface2 extends Interface0{ int someField = 200; String someMethod(); } class SomeClass implements Interface1, Interface2 { public String someMethod() { return "Метод"; } } public class Main { public static void main(String[] args) { SomeClass a = new SomeClass(); Interface1 I1=a; System.out.println( a.someMethod() ); // Метод // System.out.println( a.someField ); // ошибка System.out.println( ( (Interface1) a).someField ); // 100 System.out.println( Interface1.someField ); // 100 Interface2 I2=a; System.out.println( I2.someField ); // 200 System.out.println( I2.someMethod() ); // Метод Interface0 I0=a; System.out.println( I0.someField ); // 10 System.out.println( Interface0.someField ); // 10 } }

Слайд 12





Конфликты имен
Описание слайда:
Конфликты имен

Слайд 13





Пример конфликтов имен
interface I1 { void f(); } 
interface I2 { int f(int i); } 
interface I3 { int f(); } 
class C { public int f() { return 1; } } 
class C2 implements I1, I2 { 
public void f() {} 
public int f(int i) { return 1; } // перегружен } 
class C3 extends C implements I2 { 
public int f(int i) { return 1; } // перегружен } 
class C4 extends C implements I3 { 
// Одинаковы f () в С и I3, нет проблем: 
public int f() { return 1; } }
 // Методы различаются только возвращаемым типом: 
class C5 extends C implements I1 {} //Ошибка
interface I4 extends I1, I3 {} //Ошибка
Описание слайда:
Пример конфликтов имен interface I1 { void f(); } interface I2 { int f(int i); } interface I3 { int f(); } class C { public int f() { return 1; } } class C2 implements I1, I2 { public void f() {} public int f(int i) { return 1; } // перегружен } class C3 extends C implements I2 { public int f(int i) { return 1; } // перегружен } class C4 extends C implements I3 { // Одинаковы f () в С и I3, нет проблем: public int f() { return 1; } } // Методы различаются только возвращаемым типом: class C5 extends C implements I1 {} //Ошибка interface I4 extends I1, I3 {} //Ошибка



Похожие презентации
Mypresentation.ru
Загрузить презентацию