2015-12-17 21 views
6

Tôi đang cố thiết kế một lớp Tóm tắt và phương thức trong Android và gọi những phương thức đó bằng cách mở rộng lớp từ lớp Hoạt động gốc của tôi nhưng tôi không gọi phương thức trừu tượng của mình.Ví dụ hay nhất về lớp Tóm tắt trong Android

MyCode:

MainActivity.java

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(); } 

Vì vậy, đây là đoạn mã trên, vui lòng cho tôi biết, làm thế nào để sử dụng Tóm tắt trong Android vì tôi chưa bao giờ làm điều này trước đây.

+1

"tôi không hiểu phương pháp trừu tượng của mình không được gọi." - Bạn không gọi nó ở đâu cả; bạn chỉ đang định nghĩa nó. –

+0

có, bởi vì tôi không biết cách gọi, bạn có thể vui lòng cho tôi biết cách làm điều đó –

+1

'onTest(); ' –

Trả lời

30

tôi đã phát triển Ví dụ cho Tóm tắt Lớp:

lớp Tóm tắt:

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(); 

} 

Non Tóm tắt lớpkéo dài Abstract class:

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 !!!"); 
    } 
} 

Kết luận:

  • phương pháp trừu tượng của lớp trừu tượngphải Override trong lớp Derived
  • Non phương pháp trừu tượng của lớp trừu tượngluôn gọi phương thức của Siêu hạng

Hy vọng điều này sẽ đảm bảo chắc chắn.

+1

Thay vì" Phương pháp trừu tượng không trừu tượng luôn gọi phương thức của lớp Super ", tôi nghĩ" Phương pháp trừu tượng không thuộc lớp Derived sẽ luôn gọi phương thức của lớp Super "nên đến. ... Tôi có đúng không? – Kushal

+2

@Kushal, vâng đúng. –

+1

Hey nice example .... Tôi m ở giữa một vấn đề lớp trừu tượng trong dự án android của tôi làm thế nào tôi có thể sử dụng phương thức startActivityforresult() trong một lớp mở rộng một lớp trừu tượng – samridhgupta

3

Tôi muốn hoàn thành Hiren Partel Trả lời bằng ví dụ.

  • phương pháp trừu tượng của lớp trừu tượng phải Override trong lớp Derived
  • phương pháp trừu tượng phi của lớp trừu tượng luôn gọi phương thức của Super lớp
  • Nếu lớp trừu tượng Thực hiện một giao diện nó có thể không để Thực hiện phương pháp và để cho các lớp cuối cùng thúc đẩy để thực hiện các phương pháp giao diện

ví dụ GOD kiểm soát sinh vật của mình trên Trái đất bởi implemen ting giao diện này (: D):

public interface َAliveCreature{ 

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

} 

Và đây là live lớp trừu tượng rằng có một phương pháp nào và một phương pháp trừu tượng:

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 
} 

và điều này cuối cùng cũng được điều khiển lớp, con người:

public class Human extends MammalAbstract { 

    @Override 
    void die() { 

    } 

    @Override 
    public void breath() { 

    } 

    @Override 
    public void eat() { 

    } 

    @Override 
    public void move() { 

    } 

    @Override 
    public void haveDream() { 

    } 
} 

như bạn thấy con người phải triển khai phương pháp trừu tượng haveDream() và cũng triển khai các phương thức giao diện abstactclass! Vì vậy, đây là sức mạnh của lớp trừu tượng có thể xử lý và thêm một số phương thức và chuyển phần còn lại Phương thức giao diện cho người tiêu dùng và rất sử dụng để viết thư viện.