Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Hasonló dokumentumok
és az instanceof operátor

OOP: Java 8.Gy: Abstract osztályok, interfészek

Java programozási nyelv 5. rész Osztályok III.

JAVA PROGRAMOZÁS 2.ELŐADÁS

Interfészek. PPT 2007/2008 tavasz.

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Abstract osztályok és interface-ek. 7-dik gyakorlat

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Programozási nyelvek Java

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

Már megismert fogalmak áttekintése

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

JAVA PROGRAMOZÁS 3.ELŐADÁS

Osztályok. 4. gyakorlat

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Java II. I A Java programozási nyelv alapelemei

Osztálytervezés és implementációs ajánlások

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Osztálytervezés és implementációs ajánlások

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Programozási nyelvek Java

Java programozási nyelv 4. rész Osztályok II.

Web-technológia PHP-vel

Interfészek. Programozás II. előadás. Szénási Sándor.

Java II. I A Java programozási nyelv alapelemei

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Objektumorientált programozás C# nyelven

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Bevezetés a Python programozási nyelvbe

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

Java VII. Polimorfizmus a Java nyelvben

Programozás módszertan p.1/46

Java VII. Polimorfizmus a Java nyelvben

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

C++ programozási nyelv

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Szoftvertechnolo gia gyakorlat

OOP: Java 8.Gy: Gyakorlás

Programozási nyelvek Java

OOP és UML Áttekintés

Java III. I I. Osztálydefiníció (Bevezetés)

Java III. I I. Osztálydefiníció (Bevezetés)

Objektumorientált programozás C# nyelven

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

OOP #14 (referencia-elv)

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

Globális operátor overloading

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag

C++ programozási nyelv Konstruktorok-destruktorok

Java és web programozás

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

Programozási nyelvek II.: JAVA

7. K: JAVA alapok Konzultáció

Java és web programozás

Java IX. telkezelés a Java-ban

Java IX. telkezelés a Java-ban

Java Programozás 5. Ea: OOP alapok. Abstract Javaságok

OOP. Alapelvek Elek Tibor

ELTE SAP Excellence Center Oktatóanyag 1

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

3. Osztályok II. Programozás II

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Java Programozás 3. Ea: Java osztályok. OOP alapalapok

Bevezetés a programozásba Előadás: A const

III. OOP (objektumok, osztályok)

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

Programozás I. Első ZH segédlet

Objektumelvű programozás

Java és web programozás

Smalltalk 3. Osztályok létrehozása. Készítette: Szabó Éva

Programozási nyelvek JAVA EA+GY 1. gyakolat

Programozási alapismeretek 4.

Objektumorientált programozás Java-ban

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Bevezetés a programozásba előadás: Öröklődés

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Virtuális függvények (late binding)

Programozási nyelvek Java

Osztálytervezés és C++ implementációs ajánlások I.

Az alábbi példában a Foo f(5); konstruktor hívása után mennyi lesz f.b értéke? struct Foo { int a, b; Foo(int c):a(c*2),b(c*3) {} };

Mi a különbség az extends és az implements között. Mikor melyiket kell használni? Comperable-t megvalósító oasztályokban össze lehet hasonlitani

Számítógép és programozás 2

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

Programozási technológia

C++ programozási nyelv

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

Programozás BMEKOKAA146. Dr. Bécsi Tamás 7. előadás

Felhasználó által definiált adattípus

Informatika terméktervezőknek

Osztályok, objektumok

Szoftvertechnológia alapjai Java előadások

Segédanyag: Java alkalmazások gyakorlat

Öröklés és Polimorfizmus

Átírás:

Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában Egy osztály interfészén a nyilvános elemeinek összességét értjük, ami a használatához szükséges. Az információ rejtés elve miatt, általában csak metódusokból áll. Specifikáció, tervezés során készül el. Kényszeríti az osztály készítőjét a megfelelő elemek implementálására. Protokollok (a kommunikáció szabályai) az objektumok között. Java VIII.: Interface JAVA8 / 2 Interfészek JAVA-ban Mivel nincs globális változó, konstans, ezért lehetnek adat részei is. Szintaktikája hasonló az osztályhoz, de a class kulcsszó helyett interface. Kiterjeszthet más interfészeket (extends), létezik többszörös interfész öröklés. Az interfész nem tartalmaz végrehajtható kódot, azt a megvalósító osztályban (implements)kell megadni. Megállapodás, hogy I -vel kezdődik a neve. Java VIII.: Interface JAVA8 / 3

Tiszta absztrakt osztály A "legabsztraktabb osztály", mivel tartalma: Csak a metódusok prototípusa, nincs implementáció Név Paraméter szignatúra Visszatérési érték Minden metódus implicite public abstract Java VIII.: Interface JAVA8 / 4 Tiszta absztrakt osztály Konstans definíciókat is tartalmazhat, azok minősítése alapértelmezés szerint public static final Nincs statikus inicializáló blokkja, csak a deklaráció során inicializálható. Értékét be lehet állítani: Futás időben, ha az inicializálás csak akkor kiértékelhető elemeket tartalmaz Fordítási időben, ilyenkor hagyományos konstans. Java VIII.: Interface JAVA8 / 5 Szintaktika [módosító] interface Iazonosito [extends Ios1[,Ios2]] { [Elemek deklarációi] Módosító lehet: public abstract (elavult, mert minden interfész alapértelmezés szerint absztrakt) Java VIII.: Interface JAVA8 / 6

Interfészek kiterjesztése Minden interfész kiterjeszthet egy vagy több interfészt Fontos, hogy önmagát nem terjesztheti ki sem közvetve, sem közvetlen. Nem alakulhat ki körkörös lánc. Java VIII.: Interface JAVA8 / 7 Interfészek láthatósága public: nyilvános Ebben az esetben az interfészt azonos nevű fájlba kell írni, 1 interfész 1 fájl. -: csomagszintű Ilyenkor csak abban a csomagban lehet használni, de több is lehet egy forrásfájlban. Java VIII.: Interface JAVA8 / 8 Új osztály szintaktika [módosító] class osztálynév [extends ősosztály] [implements Iint1[,Iint2[, ]]] { [Elemek deklarációi] Java VIII.: Interface JAVA8 / 9

Szabályok Ha egy osztály implementál egy interfészt, akkor köteles annak minden metódusát implementálni! Az implementált elemeket nem módosíthatja. Metódusok esetében a fejlécnek teljesen egyeznie kell! Azonos nevű elemet az öröklődés során és az implementálás során nem kaphat meg (fordítási hiba). Azaz például az ős osztályban és valamelyik implementált interface-ben nem lehet azonos nevű metódus. Java VIII.: Interface JAVA8 / 10 Interfész használata Egy interfész új referencia típust vezet be => mindenhol használható, ahol egy osztály. Változó deklarációban szerepelhet (megadhatja annak statikus típusát). Bármelyik osztállyal helyettesíthető, amely implementálja (megadva ezzel a dinamikus típust). Java VIII.: Interface JAVA8 / 11 Forgatókönyv I. Hozzuk létre az interfészt, ha szükséges örököltessük más(ok)ból interface Itest{ boolean jo = true; boolean rossz = false; boolean joe(); Java VIII.: Interface JAVA8 / 12

Forgatókönyv II Implementáljuk az interfészt: class Munkadarab implements Itest{ int hossz; boolean joe() { if (hossz > 100) return jo; else return rossz; Java VIII.: Interface JAVA8 / 13 Forgatókönyv III Használjuk az objektumot az interfész referenciáján keresztül: class tarolo{... Vector m_munkadarabok; public void ujdarab(munkadarab ujdb){ m_munkadarab.add(ujdb); Java VIII.: Interface JAVA8 / 14 Forgatókönyv IV public kiirselejtsorszam(){ // univerzális kód, bármely Itest-et // implementáló osztályra működik for(int i=0; i < m_munkadarabok.size(); i++){ if((!(itest)m_munkadarabok.elementat(i)).joe()) { System.out.println(i); // class tarolo vege Java VIII.: Interface JAVA8 / 15

Absztrakt osztály és s interface Vannak hasonlóságok és különbségek. Az interface tisztán osztály vázat definiál, az absztrakt osztályt tartalmazhat implementációt is. Nem lehet példányosítani objektumot egyikből sem. Mindkettő típust definiál. Összehasonlítás táblázatosan: Java VIII.: Interface JAVA8 / 16 Adattag Metódus Metódus implementáció Példányosítás Absztrakt osztály és s interface Absztrakt osztály tetszőleges min. egy absztrakt tartalmazhat nem lehetséges Interface csak final csak absztrakt nem tartalazhat nincs értelmezve Metódus hívás Öröklés Metódus megvalósítás csak static lehet ős osztály leszármazott felüldefiniálhatja a metódusokat nincs értelmezve lehet más interface (egyik) őse osztálynak kell definiálnia a metódusokat Java VIII.: Interface JAVA8 / 17 Az instaceof operátor Logikai művelet. Az a instanceof B művelet igaz, ha az a változó dinamikus típusa leszármazottja a B típusnak, egyébként hamis. Akkor igaz tehát, ha az a változó dinamikus típusát meghatározó osztály maga a B osztály, vagy annak leszármazottja, vagy implementálja a B interface-t. Az instanceof precedenciája azonos a < > <= >= operátorokéval. Java VIII.: Interface JAVA8 / 18