Daha \u00f6nce \u00f6\u011frendi\u011fimiz gibi, nesneler ortaya \u00e7\u0131kard\u0131klar\u0131 metotlar sayesinde d\u0131\u015f d\u00fcnya ile etkile\u015fimlerini tan\u0131mlar. Metotlar d\u0131\u015f d\u00fcnya ile nesnenin aray\u00fcz\u00fcn\u00fc (interface) olu\u015fturur<\/strong>; \u00f6rne\u011fin, televizyon setinizin \u00f6n\u00fcndeki butonlar siz ve onun plastik kaplamas\u0131n\u0131n di\u011fer taraf\u0131ndaki elektrik kablolar\u0131 aras\u0131nda aray\u00fczd\u00fcr. Televizyonu a\u00e7mak ve kapatmak i\u00e7in “g\u00fc\u00e7” tu\u015funa basabilirsiniz.<\/p>\n\n\n\n Interface’in en yayg\u0131n hali, bir interface, bo\u015f g\u00f6vdelerle birlikte ilgili metotlar\u0131n bir grubudur. Bir bisikletin davran\u0131\u015f\u0131, bir interface (aray\u00fcz) gibi belirtildiyse, a\u015fa\u011f\u0131daki gibi g\u00f6r\u00fcn\u00fcr;<\/p>\n\n\n\n Bu interface’i uygulamak i\u00e7in, s\u0131n\u0131f\u0131n\u0131z\u0131n ad\u0131 de\u011fi\u015fecekti (\u00f6rne\u011fin, ACMEBicycle gibi belirli bir bisiklet markas\u0131na) ve class (s\u0131n\u0131f) tan\u0131mlamas\u0131nda “implements<\/em><\/strong>” anahtar kelimesini kullan\u0131rs\u0131n\u0131z.<\/p>\n\n\n\n Bir interface’\u0131n uygulanmas\u0131, bir s\u0131n\u0131f\u0131n sa\u011flamay\u0131 s\u00f6z verdi\u011fi davran\u0131\u015f hakk\u0131nda daha d\u00fczg\u00fcn \/ kurallara g\u00f6re olmas\u0131n\u0131 sa\u011flar. Interfaceler, s\u0131n\u0131f ve d\u0131\u015f d\u00fcnya aras\u0131nda bir anla\u015fma olu\u015fturur<\/strong> ve bu anla\u015fma derleyici taraf\u0131ndan in\u015fa zaman\u0131nda zorla uygulan\u0131r.<\/strong> S\u0131n\u0131f\u0131n\u0131z bir interface’i uygulamay\u0131 talep ederse,s\u0131n\u0131f ba\u015far\u0131yla derlenmeden \u00f6nce bu interface taraf\u0131ndan tan\u0131mlanm\u0131\u015f b\u00fct\u00fcn metotlar s\u0131n\u0131f\u0131n kaynak kodunda g\u00f6r\u00fcnmeli.<\/strong><\/p>\n\n\n\n Not: Asl\u0131nda ACMEBicycle s\u0131n\u0131f\u0131n\u0131 derlemek i\u00e7in, uygulanm\u0131\u015f interface metotlar\u0131n\u0131n ba\u015f\u0131na “public”<\/em><\/strong> anahtar kelimesin eklenmeye ihtiyac\u0131 vard\u0131r. Gelecek derslerde bu k\u0131s\u0131mlara detayl\u0131ca de\u011finmeye \u00e7al\u0131\u015faca\u011f\u0131z.<\/p>\n\n\n\ninterface Bicycle {\n\n \/\/ wheel revolutions per minute\n void changeCadence(int newValue);\n\n void changeGear(int newValue);\n\n void speedUp(int increment);\n\n void applyBrakes(int decrement);\n}<\/code><\/pre>\n\n\n\n
class ACMEBicycle implements Bicycle {\n\n int cadence = 0;\n int speed = 0;\n int gear = 1;\n\n \/\/ The compiler will now require that methods\n \/\/ changeCadence, changeGear, speedUp, and applyBrakes\n \/\/ all be implemented. Compilation will fail if those\n \/\/ methods are missing from this class.\n\/\/Derleyici \u015fimdi changeCadence, changeGear, speedUp, and applyBrakes metotlar\u0131n\u0131n\n\/\/uygulanmas\u0131n\u0131 zorunlu tutacakt\u0131r. E\u011fer \u015fu metotlar, bu s\u0131n\u0131ftan eksikse, derleyici ba\u015far\u0131z olur. \n void changeCadence(int newValue) {\n cadence = newValue;\n }\n\n void changeGear(int newValue) {\n gear = newValue;\n }\n\n void speedUp(int increment) {\n speed = speed + increment; \n }\n\n void applyBrakes(int decrement) {\n speed = speed - decrement;\n }\n\n void printStates() {\n System.out.println(\"cadence:\" +\n cadence + \" speed:\" + \n speed + \" gear:\" + gear);\n }\n}<\/code><\/pre>\n\n\n\n