Java - Kalıtım #2 Çok Düzeyli Bir Hiyerarşi Oluşturmak
Bir önceki yazılarımda kalıtım ile ilgili , bir üst sınıf birde alt sınıf oluşturmuştuk.Bu yapıyı istediğiniz kadar kalıtım katmanı içeren bir hiyerarşi oluşturabilirsiniz.Oluşturulmuş bir alt sınıfın ( subclass) başka bir sınıfın üst sınıfı olabileceğinden önceki yazılarımda bahsetmiştim.
Şimdi örneğimize kaldığımız yerden devam edelim ve bu örneğe yeni bir sınıf ekleyelim.Dikdörtgen örneğinde Dikdörtgene Ağırlık özelliği vermiştik , şimdi size bir Nakliye özelliği ekleyelim ve bu Dikdörtgenimizin bir ürün veya mal olduğunu düşünelim.
"Shipment" adında bir sınıf ekliyorum.
class Rectangle { private final double width; private final double height; private final double depth; Rectangle(Rectangle clone) { width = clone.width; height = clone.height; depth = clone.depth; } Rectangle(double width, double height, double depth) { this.width = width; this.height = height; this.depth = depth; } Rectangle() { width = -1; height = -1; depth = -1; } double volume() { return width * height * depth; } } class RectangleWeight extends Rectangle { double weight; RectangleWeight(RectangleWeight clone) { super(clone); weight = clone.weight; } RectangleWeight(double width, double height, double depth, double weight) { super(width, height, depth); this.weight = weight; } RectangleWeight() { super(); weight = -1; } } class Shipment extends RectangleWeight { double cost; Shipment(Shipment clone) { super(clone); cost = clone.cost; } Shipment(double width, double height, double depth, double weight, double cost) { super(width, height, depth, weight); this.cost = cost; } Shipment() { super(); cost = -1; } } class DemoShipment { public static void main(String args[]) { final Shipment shipment = new Shipment(5, 10, 15, 20, 30); final Shipment shipment2 = new Shipment(shipment); double vol; vol = shipment.volume(); System.out.println("( shipment için ) \n Dikdörtgenin Hacmi " + vol + " \n Dikdörtgenin Ağırlığı : " + shipment.weight + " \n Nakliye Ücreti : $" + shipment.cost); System.out.println(); vol = shipment2.volume(); System.out.println("( shipment2 için ) \n Dikdörtgenin Hacmi " + vol + " \n Dikdörtgenin Ağırlığı : " + shipment2.weight + " \n Nakliye Ücreti : $" + shipment2.cost); } } ( shipment için ) Dikdörtgenin Hacmi 750.0 Dikdörtgenin Ağırlığı : 20.0 Nakliye Ücreti : $30.0 ( shipment2 için ) Dikdörtgenin Hacmi 750.0 Dikdörtgenin Ağırlığı : 20.0 Nakliye Ücreti : $30.0super() devamlı en yakındaki üst sınıfın yapılandırıcısına göndermede bulunur.Shipment içindeki super(),RectangleWeight içerisindeki yapılandırıcıyı çağırır .RectangleWeight içerisindeki super() , Rectangle içindeki yapılandırıcıyı çağırır.Örneklerimin daha iyi anlaşılması için aynı dosya içerisinde oluşturarak anlatıyorum , aslında gerçekte her sınıfın farklı dosyalarda tutulması bir standarttır.
0 yorum :