kolaylaştırır. Kalıtımın gerçeklenmesini sağlayan anahtar kelime “extends” dir. Örneğin :
public class PointPlotter extends JXGraph
sınıf tanımında PointPlotter sınıfının JXGraph sınıfından miras aldığını belirtmiş oluyoruz. Buradaki JXGraph sınıfına PointPlotter sınıfının üst sınıfı denir. Kalıtım sınıflar arasında tek yönlü bir ilişki tanımlar. PointPlotter sınıfının her nesnesi aynı zamanda bir JXGraph nesnesinin özelliklerini taşımakta iken tersi yeni JXGraph nesnelerinin PointPlotter nesnesi özellikleri taşıması söz konusu değildir. Buradaki sınıf değişkenleri ve metodlarının miras alınmasında erişim denetleyicilerin kısıtlamaları söz konusudur.
Erişim denetleyicilerin anlatımı için buraya bakabilirsiniz. Bit örnekle kalıtım mekanizmasının nasıl işlediğini daha iyi anlayalım:
package net.orhanbalci.data;
/**
*
* @author Orhan BALCI
*/
public class Point2D<t> {
protected T x_;
protected T y_;
public Point2D(T x_, T y_) {
this.x_ = x_;
this.y_ = y_;
}
public Point2D(Point2D</t><t> p)
{
this.x_ = p.getX();
this.y_ = p.getY();
}
public Point2D()
{
}
public T getX() {
return x_;
}
public void setX(T x) {
this.x_ = x;
}
public T getY() {
return y_;
}
public void setY(T y) {
this.y_ = y;
}
@Override
public String toString() {
return "Point2D ["+x_+"," +y_+"]";
}
}
package net.orhanbalci.data;
/**
*
* @author orhan
*/
public class Point3D</t><t> extends Point2D</t><t> {
private T z_;
public Point3D(T z) {
this.z_ = z;
}
public Point3D(Point2D</t><t> p, T z) {
super(p);
this.z_ = z;
}
public Point3D(T x, T y, T z) {
super(x, y);
this.z_ = z;
}
public Point3D(Point3D</t><t> p)
{
this.z_ = p.z_;
this.y_ = p.y_;
this.x_ = p.x_;
}
public T getZ() {
return z_;
}
public void setZ(T z) {
this.z_ = z;
}
@Override
public String toString() {
return "Point3D ["+x_+","+y_+","+z_+"]";
}
}
Yukarıdaki örnekte yazılımımızda kullanmak üzere iki ve üç boyutlu noktaları temsil eden iki tane sınıf tanımlıyoruz. Point2D sınıfımızın x_ ve y_ olmak üzere iki adet sınıf değişkeni var. Point3D sınıfımızın kendisinde ise sadece z_ sınıf değişkeni varken Point2D sınıfından miras alarak x_ ve y_ değişkenlerine de sahip olmuştur. Dikat edilecek olursa x_ve y_ değişkenlerinin erişim denetleyicisi protected olarak ayarlanmıştır. Böylelikle alt sınıflardan erişilebilirsler. Burada dikkat etmemiz gereken bir diğer husus ise üst sınıf metodlarının alt sınıftan nasıl çağrıldığıdır. “super” anahtar kelimesi alt sınıftan üst sınıf metodlarına ve değişkenlerine erişimi sağlayan kapıdır.
public Point3D(T x, T y, T z) {
super(x, y);
this.z_ = z;
}
yapıcı metodunda super(x, y); satıları üst sınıfın
public Point2D(T x_, T y_) {
this.x_ = x_;
this.y_ = y_;
}
yapıcı metodunun çağrılmasını sağlar. Yapıcı metodlar dışındaki metdolara “super.” şaklinde ulaşabiliriz.
İlgili Yazılar:
- Java Dersleri 7 – Çok Biçimlilik (Polymorphism) Bu dersimizde Java’nın nesne odaklı programlamanın olmazsa olmazlarından çok biçimliliği...
- Java Dersleri 6 – Arayüzler ve Gerçeklenmesi (Interface and Implementation) Nesne odaklı programlamada arayüzler sınıfların dış dünyaya açılan kapılarıdır. Bir...
- Java Dersleri 8 – İç, Gömülü ve İsimsiz Sınıflar (Inner, Nested and Anonymous Classes) Bu dersimizde Java’nın gömülü sınıf yapısını öğreneceğiz. Java programlama dili...
- Java Dersleri 3 – Kontrol Yapıları Bu dersimizde Java’nın kodun akışına yön veren kontrol ifadelerinin...
- Java Dersleri 4 – Erişim Denetleyicileri (Access Modifiers) Bu dersimizde Java’nın metodlar ve sınıflar üzerinde erişim kurallarını...



guzel anlatim tesekkurler