Nesneye Yönelik Programlama Dr. Pelin GÖRGEL 30.10.2013
Kod 1
Kod 1
Kod 1
Kod 1
Kod 1
Kod 1
Kod 1
Kod 1
Kod 1
Kod 1
Kod 2
Kod 2
Kod 2
Kod 2
Kod 2
Kod 3 (4.6)
Kod 3 (4.6)
Kod 3 (4.6)
Kalıtım Örnek 1 1 metodA class A{ int xA=1; void metodA(){ System.out.println("metodA"); }} class B extends A{ int xB=1; void metodB(){ System.out.println("metodB"); public class Test { public static void main(String args[]) { A a=new A(); B b=new B(); System.out.println(a.xA); a.metodA(); //System.out.println(a.xB); //a.metodB(); System.out.println(b.xA); b.metodA(); 1 metodA
Kalıtım Örnek 2 public class Test { class A{ public static void main(String args[]) { A a=new A(); B b=new B(); System.out.println(a.xA); a.metodA(); System.out.println(b.xA); b.metodA(); }} class A{ int xA=1; void metodA(){ System.out.println("metodA"); } class B extends A{ int xB=1; void metodB(){ System.out.println("metodB"); @Override System.out.println("B sınıfındaki metodA"); 1 metodA B sınıfındaki metodA
Kalıtım Örnek 3 class B { int xB=10; public class Test { B(){ metodB(); System.out.println("B nin constr. calisti");} void metodB(){ System.out.println("metodB:"+xB); } } class C extends B { int xC=1; int xB=4; C(){ System.out.println("C nin constr. calisti"); void metodC(){ System.out.println("metodC"); @Override super.metodB(); System.out.println("C sınıfındaki metodB:"+super.xB); } } public class Test { public static void main(String args[]) { B b=new B(); C c=new C(); System.out.println(b.xB); b.metodB(); System.out.println(c.xB); c.metodB(); }} metodB:10 B nin constr. calisti C sınıfındaki metodB:10 C nin constr. calisti 10 4
Kalıtım Örnek 4 class B{ int xB=2; B(int i,int j) { //super(); Hiçbir etkisi yok System.out.println("B nin constr. çalıştı, parametreler:"+i+"ve "+j); } B (int i){ System.out.println("B nin ikinci constr. çalıştı, parametreler:"+i);} B(){ System.out.println("B nin boş constr. Çalıştı”);} void metodB() { System.out.println("metod B:"+xB); }
Kalıtım Örnek 4 class C extends B{ int xC=1; int xB=4; C(int m,int n){ //super(m); İstenirse böyle de kullanılır. super(m,n); System.out.println("C nin constr. çalıştı, parametreler:"+m+" ve "+n); } C(int m){ super(m); System.out.println("C nin ikinci constr. çalıştı, parametreler:"+m); } C(int m,int n,int k){ super(); System.out.println("C nin üçüncü constr. çalıştı");} void metodC() { System.out.println("metod C"); } @Override void metodB() System.out.println("C deki metod b:"+super.xB); super.metodB(); } }
Kalıtım Örnek 4 public class Test { public static void main(String args[]) { B b1=new B(3,5); B b2=new B(7); C c1=new C(10,20); C c2=new C(6); C c3=new C(7,8,9); System.out.println(b1.xB); b1.metodB(); System.out.println(c1.xB); c1.metodB(); } B nin constr. çalıştı, parametreler:3ve 5 B nin ikinci constr. çalıştı, parametreler:7 B nin constr. çalıştı, parametreler:10ve 20 C nin constr. çalıştı, parametreler:10 ve 20 B nin ikinci constr. çalıştı, parametreler:6 C nin ikinci constr. çalıştı, parametreler:6 B nin bos constr. çalıştı C nin üçüncü constr. çalıştı 2 metod B:2 4 C deki metod b:2
Arayüz (Interfaces) Sınıf kavramına benzerler çünkü; Birçok metod ve field (sınıf değişkeni) içerebilirler. .java uzantısını alır, dosya ismi ile aynı olmalıdır. bytecode’a çevrilir ve .class uzantılı dosya oluşur.
Arayüz (Interfaces) Sınıflardan farklıdırlar çünkü; Alt sınıflar arayüzleri ‘extend’ değil, ‘implement’ ederler. Tüm metodları soyuttur ve gövde kısımları bulunmaz. Private veya protected olamazlar. Örneklendirme – instantiate yapılamaz (nesne türetilemez). Field’lar public, static ve final olmalıdır. Constructor içermez. Bir arayüz diğer arayüzlerden miras alabilir. Sınıflar yalnızca bir kez extend edilirken arayüzler birden çok kez extend edilir.
Interface Taslak
Interface Örneği-1
Interface Örneği-1
Interface Örneği-2
Interface Örneği-3
Extending Interfaces
Extending Multiple Interfaces public interface Hockey extends Sports,Event
Çalışma 1: Aşağıdaki kod parçasının çıktısı nedir? class Quest { public Quest(int x){ System.out.print("A:"+x);}} class Quest1 extends Quest { public Quest1(int x){ System.out.print("B:"+x); super(x+1); }} public class Test3 { public static void main(String argv[]){ Quest1 q=new Quest1(5); }}
Çalışma 2: Aşağıdaki kod parçasının çıktısı nedir? class Base{ Base(){ System.out.print("Base");}} public class Check extends Base{ public static void main(String argv[]){ Check c = new Check(); super(); } Check(){ System.out.print("Check"); }}
Çalışma 3: Aşağıdaki boşluğa ne yazılırsa ekrana 1 yazdırılır? class S{ static int x=10;} public class Quest3 extends S{ public static void main(String argv[]){ Quest3 d = new Quest3(); d.mthd();} public void mthd(){ ............... System.out.println(x); } }
Banka Uygulaması interface Banka{ void parayatir(int miktar); void paracek(int miktar); void aidat_ode(int miktar); } public class Bank1 implements Banka { int bakiye; int hesap_no; public void parayatir(int miktar){ bakiye+= miktar; public void paracek(int miktar){ bakiye-= miktar; public void aidat_ode(int miktar){ public static void hesaba_havale(Bank1 alici,Bank1 gonderici,int miktar){ gonderici.bakiye-= miktar; alici.bakiye+=miktar; public static void main(String args[]){ Bank1 musteria=new Bank1(); Bank1 musterib=new Bank1(); musteria.bakiye=2000; musterib.bakiye=8000; System.out.println("musteria:"+musteria.bakiye); musteria.aidat_ode(100); hesaba_havale(musteria,musterib,500); System.out.println("musterib:"+musterib.bakiye); hesaba_havale(musterib,musteria, 1800);