 |
|
 |
|
Miras ile anlatılmak istenen yeni bir sınıf oluşturulduğunda diğer sınıflardan farkının belirtilmesidir. Her sınıfa ait bu sınıfın özelliklerini taşır. Bir sınıfın daha üstünde bulunan sınıfa o sınıfın süper sınıfı, altında bulunana ise alt sınıf denir. Alt sınıflar üstünde bulunan sınıfın özelliklerini taşır, bu yüzden süper sınıfın değişkenlerini alt sınıfta yeniden tanımlamaya gerek yoktur. Çoğu kez bir sınıf oluşturmak için varolan diğer sınıfların özelliklerine yenilerini eklemeye gidilir. Yapacağımız işe uydun buton sınıfını tanımlamaka için varolan buton sınıfından yaralanılır. Buton sınıfına yeni özellikler eklenerek yeni bir buton sınıfı oluşturulabilir. Eğer yeni bir sınıf bir sınıf oluşturmak istersek, tıpkı Bilgisayar sınıfında olduğu gibi, var olan bir sınıftan yararlanacağımız için Java bu sınıfı nesne altındaki bir sınıf olarak kabul eder.
Sınıf hiyerarşisi: Yeni bir sınıf oluşturulurken yapılacak en mantıklı şey sınıf hiyerarşisini kontrol etmektir. Bu da sınıfın hangi sınıfların alt sınıfları olabileceği ve bunun bize ne avantaj sağlayacağıdır. Sağlanabilecek en önemli avantajlar: 1. Yukarıdaki sınıflara ait bilgileri alt sınıflarda istenildiği kadar kullanabilmek. 2. Bir sınıfın hiyerarşi içindeki yerini değiştirerek yeniden derlemeye gerek kalmadan davranışını değiştirebilmektir. Bilgisayar sınıfına bir alt sınıf oluşturmak istediğimizde bir laptop bilgisayar uygun olabilir. Her şeyden önce her ikisi de bilgisayardır. İkisinin de benzer özellikleri (marka, hız) vardır. Ancak bir çamaşır makinesinin bilgisayar sınıfının alt sınıfı olmasıyla bize ne yarar sağlayacağı konusu üzerinde fazla düşünmeye gerek yoktur.
Alt sınıf oluşturma Alt sınıfların en çok kullanıldığı Java programları Java Appletlerdir. Bu sayede Applet sayfa içinde istenen yere kolaylıkla yerleştirilebildiği gibi sistemle etkileşimi de kolaylıkla sağlanabilir. Örnek olarak kendimizi tanıtan bir applet oluşturalım. public class Murat extends java.applet.Applet{ } bu komut satırıyla applet sınıfın alt sınıfı olan Murat adında bir alt sınıf oluşturduk. Komut satırındaki bir diğer önemli nokta ise public kelimesidir. Public kelimesi bu sınıfın diğer sınıflar tarafında kullanılabileceği anlamına gelmektedir. Applet özellikleri gereği public tanımlanmak zorundadır. } imlecinden sonra Font yeni = new Font(“Time Roman”, Font.BOLD,50); Komut satırını eklemek ile java.awt sınıfına sahip Font fonksiyonu ile 50 puntoda, Times New Roman stilinde, Bold olan yeni adlı bir nesne tanımlamış olduk. Diğer metot da painttir. Bu metot tek başına bir şey yapmamasına rağmen applet sınıfı içinde kullanarak yazılan metinin rengi vb. özelliklerinin belirlenmesinde kullanılır.
Java:
public void paint ( Graphic g ){ g. setFont (yeni ); g. setColor(Color, red ); g. drawString(“Merhaba ben Murat Çatmalı”, 5, 25);
Paint( ) sınıfı global olarak tanımlanmıştır. Bu komut satırlarıyla yapılan; 1. Graphics nesnesine fontlar için erişeceği yer belirtilmiştir. 2. Graphics nesnesine kullanacağı renk belirtilmiştir. 3. Merhaba ben Murat Çatmalı yazısı 5 satır, 25. Sütuna yazdırılmıştır.
Java:
public class Murat extends java. applet. Applet{ Font yeni = new Font(“Time Roman”, Font. BOLD, 50); public void paint ( Graphic g ){ g. setFont (yeni ); g. setColor(Color, red ); g. drawString(“Merhaba ben Murat Çatmalı”, 5, 25); }
appletimizi bu şekilde yazıp derlediğimizde bir hata ile karşılaşırız.
MuratApplet.java: 7:Class Graphic not found in type declaration. Bu hatanın sebebi kullanılan sınıfların tanımlanmamasıdır. Default olarak sadece java.lang paketi program tarafından içerilir. Bizim ise örneğimizde üç sınıfımız vardır: Graphics, Font ve Renk. Programımızın en son hali:
Java:
import java.awt.Graphics; import java.awt.Font; import java.awt.Color; public class Murat extends java. applet. Applet{ Font yeni= new Font("TimesRoman", Font. BOLD, 36); public void paint (Graphics g ){ g. setFont(yeni ); g. setColor(Color. red); g. drawString("Merhaba ben Murat €atmali", 5, 25); } }
Kurucu (Costructor) Metot ve New( ) deyimi Konumuzu bir örnek üzerinde anlatmaya çalışalım. Bu örneğimizde kisitesti adlı bir sınıf tanımlayalım. kisitesti sınıfında ad ve soyad adlı değişkenleri tanımlayalım.
Java:
import java.io.*; class kisitesti { String ad; String soyad; } class kisi { public static void main (String args []) { kisitesti benim= new kisitesti (); benim. ad= "Murat"; benim. soyad= "Catmali"; System. out. println("Benim adim: "+benim. ad); System. out. println("Benim soyadim: "+benim. soyad); } }
Bu programda kisitesti sınıfında tanımlanan ad ve soyad değişkenlerine ilk değer atamak yerinde iki defa çağrıldığını düşünelim. Bu kadar kısa bir program kısa bir program bile gereksiz yere çok uzayacaktır. Bu iş için Java programlama dilinde kurucu sınıfı kullanılmıştır. Bu metot diğer metotlardan biraz farklıdır. Önce metot önüne metot değişken türü gelmez ve metot dışında hiçbir değişken göndermezler. İsimleri de her zaman sınıf ismiyle aynı olur. Şimdi aynı örneği kurucu metodu kullanarak yapalım.
Java:
import java.io.*; class kisitesti { String ad; String soyad; kisitesti (String a, String b ) { ad=a; soyad=b; } } class kisi1 { public static void main (String args []) { kisitesti benim= new kisitesti ("Murat", "Catmali"); System. out. println("Benim adim: "+benim. ad); System. out. println("Benim soyadim: "+benim. soyad); } }
This deyiminin kullanımı Bir metodun ait olduğu sınıftan yaratılacak nesneyi veya o nesnenin bir alt değişkenini tanımlamak gerekir. Nesne daha tanımlanmadığından direk olarak nesne ismini kullanamayız. Bunun yerine Java this deyimini kullanılır. this deyimi özellikle sınıfa ait değişken isimlerinin aynısı metotta kullanılmışsa işe yarar. Bu durumda değişkenler this.değişken_adı komutu çağırabilir.
Java:
import java.awt.Graphics; import java.applet.Applet; public class deyim extends Applet { //bu degiskeler tum sinifa aittir double x; int y; void metot1 (Graphics g )//metota hi‡bir degisken girmiyor { double x; int y; x= 5. 5; y= 4; //tum sinifa ait degiskenler this kelimesi ile birlikte kullanlabilir g. drawString("metot 1 in dis degiskenleri this ile ulasimi:x="+ this. x+ "y="+ this. y, 25, 25); g. drawString("metot 1 in ic degiskenleri:x="+x+ "y="+y, 25, 40); } public void paint (Graphics g ) {x= 2. 5;y= 3; metot1 (g ); }}
|
 |
 |
|
 |
|
|