mixin, with, extends, implements kavramları | Dart

Gauloran

Global Moderatör
7 Tem 2013
8,134
624
merhaba mixin, with, extends, implements kavramlarından ve kullanımlarından bahsedeceğim.

mixin:

maxresdefault.jpg

mixinler sınıflara yeni özellikler getirir

dart dilinde örneklere bakalım

Kod:
mixin Logger {
  void log(String message) {
    print(message);
  }
}

şimdi bir dog diye sınıf oluşturup with Logger
desek Dog sınıfına yeni özellik kazandırmış olduk bir nevi

Kod:
class Dog with Logger {
  void bark() {
    log("Woof!");
  }
}

iStock-532030626-58ae14295f9b58a3c92d7102.jpg

mainde de böyle kullanabiliriz
dog diye Dog sınıfından bir nesne oluşturup
kullanalım

Kod:
void main() {
  final dog = Dog();
  dog.bark(); // "Woof!" yazdırır
}

extends:

maxresdefault.jpg


bir sınıfın başka bir sınıftan kalıtım almasını sağlıyor hemen bakalım

Kod:
class Animal {
  void eat() {
    print("Animal is eating.");
  }
}

hayvan diye bir sınıf oluşturduk içerisinde
eat diye bir fonksiyon yazdık şimdi Dog diye bir
sınıf oluşturup extends Animal dersek

Kod:
class Dog extends Animal {
  void bark() {
    print("Woof!");
  }
}

dog sınıfından nesne oluşturduğumuzda misal

Kod:
final dog = Dog();
dog.eat();  //böyle kullanılabiliyor

normalde eat metodu Animal sınıfında var ama Dog sınıfı Animal sınıfından miras aldığı için eat metodunu kullanabiliyoruz dog sınıfının nesnelerinde.

Kod:
void main() {
  final dog = Dog();
  dog.eat(); // "Animal is eating." yazdırır
  dog.bark(); // "Woof!" yazdırır
}

with:

with bir sınıfa mixin eklemek için kullanılıyor yani en üstte yaptığımız örnekte görebilirsiniz ama bir daha yapalım.

Kod:
class Jumping {
  void jump() {
    print("Jumping!");
  }
}

sınıfımızı oluşturduk metodumuzu da yazmışız şimdi cat diye bir sınıf oluşturalım

Kod:
class Cat with Jumping {
  void meow() {
    print("Meow!");
  }
}

with Jumping dediğimiz için cat sınıfından nesne oluşturduğumuzda jump metodunu kullanabileceğiz.

with blabla dediğimizde sınıfın temel yapısını değiştirmiş olmuyoruz sadece yetenek vermiş oluyoruz ancak extends ise alt sınıf üst sınıf ilişkisi oluşturuyor ve üst sınıfın tüm özelliklerini miras alıyor farkları bu.

implements:

maxresdefault.jpg

sınıfın belirtilen şeyin tüm metodlarını kullanmasını gerektirir örnekle daha iyi açıklayabilirim

Kod:
abstract class Animal {
  void makeSound();
}

soyut sınıf oluşturduk şimdi Dog diye bir sınıf oluşturalım ve implements Animal diyelim






Kod:
class Dog implements Animal {
  @override
  void makeSound() {
    print("Woof!");
  }
}


burada Animaldan implements ettiğimiz için Animal daki metodları kullanmamız zorunludur yani override etmek zorunda kalıyoruz implementsin de olayı bu.

bir başka örnek:

Kod:
class Cat implements Animal {
  @override
  void makeSound() {
    print("Meow!");
  }
}

Kod:
void main() {
  final dog = Dog();
  final cat = Cat();
...

zaman zaman 101 seviyesinde kafa karıştırıcı olabilen bazı kavramları ele aldım okuduğunuz için teşekkürler.​
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.