Soyut anahtar kelime Java'da soyutlama elde etmek için kullanılır. Soyut sınıf ve yöntem oluşturmak için kullanılan erişim dışı bir değiştiricidir.
Soyut bir sınıfın rolü soyut yöntemleri içermesidir. Ancak soyut olmayan yöntemleri de içerebilir. Soyut anahtar kelimeyle bildirilen ve herhangi bir uygulaması olmayan yönteme soyut yöntem denir.
Sözdizimi:-
abstract class Employee { abstract void work(); }
Not - Soyut olmayan sınıfta soyut yöntemler bildiremeyiz.
Soyut anahtar kelimenin kuralları
Yapılmayacaklar
- Soyut bir anahtar kelime değişkenler ve yapıcılarla kullanılamaz.
- Bir sınıf soyutsa örneklenemez.
- Bir yöntem soyutsa gövdeyi içermez.
- Soyut anahtar kelimeyi şununla kullanamayız: son .
- Soyut yöntemleri şu şekilde ilan edemeyiz: özel .
- Soyut yöntemleri şu şekilde ilan edemeyiz: statik .
- Soyut bir yöntem senkronize edilemez.
yapılacaklar
- Soyut bir anahtar kelime yalnızca sınıf ve yöntemle kullanılabilir.
- Soyut bir sınıf, yapıcıları ve statik yöntemleri içerebilir.
- Eğer bir sınıf soyut sınıfı genişletiyorsa, soyut yöntemlerden en az birini de uygulamalıdır.
- Soyut bir sınıf, ana yöntemi ve son yöntemi içerebilir.
- Soyut bir sınıf aşırı yüklenmiş soyut yöntemler içerebilir.
- Yerel iç sınıfı soyut olarak ilan edebiliriz.
- Soyut yöntemi throw cümleciğiyle bildirebiliriz.
Soyut Anahtar Kelime örnekleri
Örnek 1: Soyut yöntemi içeren soyut sınıf
abstract class Vehicle { abstract void bike(); } class Honda extends Vehicle { @Override void bike() { System.out.println('Bike is running'); } } public class AbstractExample1 { public static void main(String[] args) { Honda obj=new Honda(); obj.bike(); } }Şimdi Test Edin
Çıktı:
myflixr
Bike is running
Örnek 2: Soyut ve soyut olmayan yöntemi içeren soyut sınıf
abstract class Vehicle { abstract void bike(); void car() { System.out.println('Car is running'); } } class Honda extends Vehicle { @Override void bike() { System.out.println('Bike is running'); } } public class AbstractExample2 { public static void main(String[] args) { Honda obj=new Honda(); obj.bike(); obj.car(); } }Şimdi Test Edin
Çıktı:
Bike is running Car is running
Örnek 3: Yapıcıyı içeren soyut sınıf
abstract class Vehicle { String msg; Vehicle(String msg) { this.msg=msg; } void display() { System.out.println(msg); } } class Honda extends Vehicle { Honda(String msg) { super(msg); } } public class AbstractExample3 { public static void main(String[] args) { Honda obj=new Honda('Constructor is invoked'); obj.display(); } }Şimdi Test Edin
Çıktı:
Constructor is invoked
Örnek 4: Aşırı yüklenmiş soyut yöntemler içeren soyut sınıf
abstract class Vehicle { abstract void display(); abstract void display(String msg); } class Honda extends Vehicle { @Override void display() { System.out.println('abstract method is invoked'); } @Override void display(String msg) { System.out.println(msg); } } public class AbstractExample4 { public static void main(String[] args) { Honda obj=new Honda(); obj.display(); obj.display('overloaded abstract method is invoked'); } }Şimdi Test Edin
Çıktı:
çalışma hatası
abstract method is invoked overloaded abstract method is invoked
Örnek 5: İç soyut sınıf
class Vehicle { abstract class Car { abstract void display(); } class Honda extends Car { @Override void display() { System.out.println('inner abstract class is invoked'); } } } public class AbstractExample5 { public static void main(String[] args) { Vehicle obj=new Vehicle(); Vehicle.Car c=obj.new Honda(); c.display(); } }Şimdi Test Edin
Çıktı:
inner abstract class is invoked
Örnek 6: İç içe geçmiş soyut sınıf
abstract class Vehicle { abstract class Car { abstract void display(); } } class Honda extends Vehicle { class FourWheller extends Car { @Override void display() { System.out.println('nested abstract class is invoked'); } } } public class AbstractExample6 { public static void main(String[] args) { Vehicle obj=new Honda(); Honda h=(Honda)obj; Honda.FourWheller fw=h.new FourWheller(); fw.display(); } }Şimdi Test Edin
Çıktı:
nested abstract class is invoked