- 7 Tem 2013
- 8,205
- 685
merhaba mixin, with, extends, implements kavramlarından ve kullanımlarından bahsedeceğim.
mixin:
mixinler sınıflara yeni özellikler getirir
dart dilinde örneklere bakalım
şimdi bir dog diye sınıf oluşturup with Logger
desek Dog sınıfına yeni özellik kazandırmış olduk bir nevi
mainde de böyle kullanabiliriz
dog diye Dog sınıfından bir nesne oluşturup
kullanalım
extends:
bir sınıfın başka bir sınıftan kalıtım almasını sağlıyor hemen bakalım
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
dog sınıfından nesne oluşturduğumuzda misal
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.
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.
sınıfımızı oluşturduk metodumuzu da yazmışız şimdi cat diye bir sınıf oluşturalım
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:
sınıfın belirtilen şeyin tüm metodlarını kullanmasını gerektirir örnekle daha iyi açıklayabilirim
soyut sınıf oluşturduk şimdi Dog diye bir sınıf oluşturalım ve implements Animal diyelim
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:
zaman zaman 101 seviyesinde kafa karıştırıcı olabilen bazı kavramları ele aldım okuduğunuz için teşekkürler.
mixin:
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!");
}
}
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:
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:
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.