Soyut anahtar kelimeyle bildirilen bir sınıf, soyut sınıf olarak bilinir. Java . Soyut ve soyut olmayan yöntemlere (bedenle yöntem) sahip olabilir.
Java soyut sınıfını öğrenmeden önce Java'daki soyutlamayı anlayalım.
karınca vs maven
Java'da soyutlama
Soyutlama uygulama ayrıntılarının gizlenmesi ve kullanıcıya yalnızca işlevselliğin gösterilmesi işlemidir.
Başka bir şekilde, kullanıcıya yalnızca önemli şeyleri gösterir ve dahili ayrıntıları gizler; örneğin, metni yazıp mesajı gönderdiğiniz SMS gönderme. Mesaj teslimiyle ilgili dahili işlemleri bilmiyorsunuz.
Soyutlama, neyin önemli olduğuna odaklanmanızı sağlar. nesne nasıl yaptığı yerine yapar.
Soyutlamaya ulaşmanın yolları
Java'da soyutlamaya ulaşmanın iki yolu vardır
- Soyut sınıf (%0 - 100)
- Arayüz (%100)
Java'da soyut sınıf
Soyut olarak bildirilen bir sınıf, bir sınıf olarak bilinir. soyut sınıf . Soyut ve soyut olmayan yöntemlere sahip olabilir. Yaygınlaştırılması ve yönteminin uygulanması gerekiyor. Örneklenemez.
Hatırlanacak noktalar
- Soyut bir sınıf, soyut bir anahtar kelimeyle bildirilmelidir.
- Soyut ve soyut olmayan yöntemlere sahip olabilir.
- Örneklenemez.
- Sahip olabilir inşaatçılar ve ayrıca statik yöntemler.
- Alt sınıfı yöntemin gövdesini değiştirmemeye zorlayacak son yöntemlere sahip olabilir.
Soyut sınıf örneği
abstract class A{}
Java'da Soyut Yöntem
Soyut olarak bildirilen ve uygulaması olmayan bir yöntem, soyut yöntem olarak bilinir.
Soyut yöntem örneği
abstract void printStatus();//no method body and abstract
Soyut bir yönteme sahip Soyut sınıf örneği
Bu örnekte Bike, yalnızca bir soyut yöntem çalıştırması içeren soyut bir sınıftır. Uygulaması Honda sınıfı tarafından sağlanmaktadır.
abstract class Bike{ abstract void run(); } class Honda4 extends Bike{ void run(){System.out.println('running safely');} public static void main(String args[]){ Bike obj = new Honda4(); obj.run(); } }Şimdi Test Edin
running safely
Soyut sınıfın gerçek senaryosunu anlamak
Bu örnekte Shape soyut sınıftır ve uygulanması Rectangle ve Circle sınıfları tarafından sağlanmaktadır.
Çoğunlukla, (son kullanıcıya gizlenen) uygulama sınıfı hakkında bilgimiz yoktur ve uygulama sınıfının bir nesnesi, uygulama sınıfı tarafından sağlanır. fabrika yöntemi .
A fabrika yöntemi sınıfın örneğini döndüren bir yöntemdir. Fabrika yöntemini daha sonra öğreneceğiz.
ekta kapoor oyuncusu
Bu örnekte Rectangle sınıfının örneğini oluşturursanız Rectangle sınıfının Draw() yöntemi çağrılacaktır.
Dosya: TestAbstraction1.java
abstract class Shape{ abstract void draw(); } //In real scenario, implementation is provided by others i.e. unknown by end user class Rectangle extends Shape{ void draw(){System.out.println('drawing rectangle');} } class Circle1 extends Shape{ void draw(){System.out.println('drawing circle');} } //In real scenario, method is called by programmer or user class TestAbstraction1{ public static void main(String args[]){ Shape s=new Circle1();//In a real scenario, object is provided through method, e.g., getShape() method s.draw(); } }Şimdi Test Edin
drawing circle
Java'daki Soyut sınıfın başka bir örneği
Dosya: TestBank.java
abstract class Bank{ abstract int getRateOfInterest(); } class SBI extends Bank{ int getRateOfInterest(){return 7;} } class PNB extends Bank{ int getRateOfInterest(){return 8;} } class TestBank{ public static void main(String args[]){ Bank b; b=new SBI(); System.out.println('Rate of Interest is: '+b.getRateOfInterest()+' %'); b=new PNB(); System.out.println('Rate of Interest is: '+b.getRateOfInterest()+' %'); }}Şimdi Test Edin
Rate of Interest is: 7 % Rate of Interest is: 8 %
Yapıcı, veri üyesi ve yöntemlere sahip soyut sınıf
Soyut bir sınıfta bir veri üyesi, soyut yöntem, yöntem gövdesi (soyut olmayan yöntem), yapıcı ve hatta main() yöntemi bulunabilir.
Dosya: TestAbstraction2.java
//Example of an abstract class that has abstract and non-abstract methods abstract class Bike{ Bike(){System.out.println('bike is created');} abstract void run(); void changeGear(){System.out.println('gear changed');} } //Creating a Child class which inherits Abstract class class Honda extends Bike{ void run(){System.out.println('running safely..');} } //Creating a Test class which calls abstract and non-abstract methods class TestAbstraction2{ public static void main(String args[]){ Bike obj = new Honda(); obj.run(); obj.changeGear(); } }Şimdi Test Edin
bike is created running safely.. gear changed
Kural: Bir sınıfta soyut bir yöntem varsa o sınıfın soyut olması gerekir.
class Bike12{ abstract void run(); }Şimdi Test Edin
compile time error
Kural: Soyut bir metodu olan soyut bir sınıfı genişletiyorsanız, ya yöntemin uygulamasını sağlamalısınız ya da bu sınıfı soyut yapmalısınız.
Soyut sınıfın bir başka gerçek senaryosu
Soyut sınıf aynı zamanda bazı uygulamaların uygulanmasını sağlamak için de kullanılabilir. arayüz . Böyle bir durumda son kullanıcı, arayüzün tüm yöntemlerini geçersiz kılmak zorunda kalmayabilir.
Not: Java'ya yeni başlıyorsanız, önce arayüzü öğrenin ve bu örneği atlayın.
interface A{ void a(); void b(); void c(); void d(); } abstract class B implements A{ public void c(){System.out.println('I am c');} } class M extends B{ public void a(){System.out.println('I am a');} public void b(){System.out.println('I am b');} public void d(){System.out.println('I am d');} } class Test5{ public static void main(String args[]){ A a=new M(); a.a(); a.b(); a.c(); a.d(); }}Şimdi Test Edin
Output:I am a I am b I am c I am d