Özet - Miras
- Java kursu
- Orta seviye
- Ders 18/116
- 5 dk
super ve override'ı birleştirerek bir şekil hiyerarşisi yazarsın.
Özet - Miras
Bu grupta extends ile mirası, super ile üst sınıf yapıcı çağrısını, @Override ile metot geçersiz kılmayı, Object sınıfını ve final anahtar kelimesini öğrendin. Miras, sınıflar arasında kod paylaşımı sağlar.
Şimdi tüm bunları bir araya getireceksin: bir üst sınıf tanımla, alt sınıf extends ile miras alsın, super ile yapıcıyı çağır, @Override ile metot geçersiz kıl. Bu, nesne yönelimli tasarımın temelidir.
Uygulama Bird sınıfını Animal'dan miras al
Animal adında bir sınıf tanımla; String name alanı ve Animal(String n) yapıcısı olsun, name = n; atansın. Bird extends Animal tanımla; Bird(String n) yapıcısı super(n) ile başlasın. @Override ile void sound() metodunu ekle, gövdede System.out.println(name + " ötüyor"); yaz. Bird içine main koy; bir Bird örneği oluştur ve sound metodunu çağır.
Başlangıç kodu
// Animal sınıfını tanımla
// Bird extends Animal tanımla, yapıcı ve geçersiz kılma ekle
// main içinde örnekle ve çağırÖrnek çözüm
class Animal {
String name;
Animal(String n) {
name = n;
}
void sound() {
}
}
class Bird extends Animal {
Bird(String n) {
super(n);
}
@Override
void sound() {
System.out.println(name + " ötüyor");
}
public static void main(String[] args) {
Bird b = new Bird("Serçe");
b.sound();
}
}Beklenen çıktı
Serçe ötüyor
Sırada ne var?
Mirası öğrendin. Sonraki gruplarda encapsulation ile alanları korumayı, static üyelerle sınıf düzeyinde veriyi ve interface ile sözleşme tanımlamayı göreceksin. Bunlar, sınıf tasarımının bir sonraki katmanıdır.
Bu grup; extends, super, @Override, Object ve final kavramlarını birleştirdi. Bunlar sınıf hiyerarşisinin temelidir. Bir sonraki adımda encapsulation ile alan erişimini denetim altına alacaksın; private alanlar ve getter/setter ile veriyi koruyacaksın.
Uygulama Vehicle sınıfını miras ile tanımla
Vehicle adında bir sınıf tanımla; String brand alanı ve Vehicle(String b) yapıcısı olsun, brand = b; atansın. Car extends Vehicle tanımla; Car(String b) yapıcısı super(b) ile başlasın. public String toString() metodunu Car'a ekle; brand döndürsün. Car içine main koy; bir Car örneği oluştur ve println ile yazdır.
Başlangıç kodu
// Vehicle sınıfını tanımla
// Car extends Vehicle, super ve toString ekle
// main içinde örnekle ve yazdırÖrnek çözüm
class Vehicle {
String brand;
Vehicle(String b) {
brand = b;
}
}
class Car extends Vehicle {
Car(String b) {
super(b);
}
public String toString() {
return brand;
}
public static void main(String[] args) {
Car c = new Car("Toyota");
System.out.println(c);
}
}Beklenen çıktı
Toyota
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Alt sınıf yapıcısında super() nerede olmalıdır?
- Ortada
- İlk satırda Doğru cevap
- Son satırda
- Sınıf dışında
Açıklama: İlk satırda — super() ilk satırda olmalı.
2 Override annotation ekle
class Bird extends Animal {
____
void fly() {
System.out.println("Uçuyor");
}
}
class Bird extends Animal {
@Override
void fly() {
System.out.println("Uçuyor");
}
}
Açıklama: @Override ile metot geçersiz kılma belirtilir.