2015-12-17 17 views
6

Android'de bir Özet sınıfını ve yöntemini tasarlamaya çalışıyorum ve sınıfı ana etkinlik sınıfımdan genişleterek bu yöntemleri çağırıyorum ama soyut yöntemimi nasıl arayacağımı bilmiyorum.Android'de Soyut sınıfının en iyi örneği

BBKod: nasıl kullanmak

public class MainActivity extends MyActivity { 

    @Override 
    public void onTest() { 

     Log.d("MyLog", "onTest"); 

    } } 

MyActivity.java

public abstract class MyActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

    } 

public abstract void onTest(); } 

Yani bu bana haber Yukarıdaki kod parçası bildirin edilir

MainActivity.java, Android'de soyut çünkü daha önce hiç yapmadım.

+1

"Benim soyut yöntemimin çağrılmadığını anlamıyorum." - Hiçbir yere çağırmıyorsun. sadece onu tanımladın. –

+0

evet, çünkü nasıl arayacağımı bilmiyorum, lütfen bana –

+1

'onTest();' –

cevap

30

Ben Özet Sınıf için Örnek geliştirdik:

Özet sınıfı:

public abstract class BaseActivity extends Activity { 

    public static final String TAG = "Test"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(myView()); 
     activityCreated(); 
    } 

    public void printMessage(String message){ 
     System.out.print(message); 
    } 


    public abstract int myView(); 
    public abstract void activityCreated(); 

} 

Olmayan Özet sınıfÖzet sınıfını uzatır:

public class TestActivity extends BaseActivity { 

@Override 
public int myView() { 
    return R.layout.activity_main; 
} 

@Override 
public void printMessage(String message) { 
    super.printMessage(message); 
} 

@Override 
public void activityCreated() { 
    Log.i("TestActivity", "Created"); 

    printMessage("Hello Hiren !!!"); 
    } 
} 

Sonuç:

  • Özet yöntem soyut sınıfsoyut sınıfın Türetilmiş sınıf yılında
  • Sigara soyut yöntem geçersiz kıl olmalıdıraitdaima yöntem diyoruz Süper sınıf

Bu durumun emin olacağına inanıyorum.

+1

her zaman Süper sınıf yöntemi çağrısı ", sanırım" Türetilmiş sınıfın soyut soyut yöntemi her zaman Süper sınıf yöntemini çağırır "gelmelidir. ... Doğrumuyum ? – Kushal

+2

@Kushal, evet doğru. –

+1

Hey güzel örnek .... Benim android projemde soyut bir sınıf sorunu ortasındayım nasıl bir sınıf – samridhgupta

3

Tamamlamak istiyorum Hiren Partel Bir örnekle answer.

    soyut sınıfın
  • Özet yöntem soyut sınıfın
  • Sigara soyut yöntem her zaman soyut sınıf yöntemleri uygulamak için değil mümkün olan bir Arabirimi uygular
  • ise Süper sınıfın yöntemi diyoruz
  • Türetilmiş sınıfta geçersiz kılma olmalıdır ve son olarak tahrik sınıf örneğinde için Arayüz yöntemleri

Uygulama izin implemen tarafından yeryüzünde onun yaratık kontrol TANRI ting Bu arayüz (: D):

public interface َAliveCreature{ 

    void breath(); 
    void eat(); 
    void move(); 
    void die(); 

} 

Ve bu halk yöntemi ve bir soyut yöntemine sahip soyut sınıf canlı geçerli:

public abstract class MammalAbstract implements َAliveCreature{ 

public void feedBabyWithMilk(){ 
    log.i(TAG,"baby was feeded"); 
} 

abstract void haveDream(); 
//this is abstract method and had to implement in consumer class 
} 

ve bu nihayet tahrik edilmektedir sınıfı, insan:

public class Human extends MammalAbstract { 

    @Override 
    void die() { 

    } 

    @Override 
    public void breath() { 

    } 

    @Override 
    public void eat() { 

    } 

    @Override 
    public void move() { 

    } 

    @Override 
    public void haveDream() { 

    } 
} 

Gördüğünüz gibi insan soyut yöntem haveDream() uygulamak zorunda ve aynı zamanda abstactclass arabirimi yöntemleri uygulamak! Yani bu, bazı yöntemleri ele alıp ekleyebilen soyut sınıfın gücü ve kütüphane yazma için tüketiciye çok kullanımlı ve tam anlamıyla arayüz metotları aktarıyor.