Android=で1つの抽象クラスとメソッドを設計し、親アクティビティクラスからクラスを拡張することでこれらのメソッドを呼び出しますが、抽象メソッドを呼び出す方法はありません。
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(); }
これが上記のコードスニペットです。AbstractをAndroidで使用する方法はこれまでに行ったことがないためです。
これは、登録および登録解除に使用できる例です[〜#〜] any [〜#〜]BroadcastReceiver
using Abstractクラス:
BaseClass:
public abstract class BaseReceiverActivity extends AppCompatActivity{
private BroadCastReceiver receiver;
private IntentFilter filter;
public abstract BroadCastReceiver getReceiver();
public abstract IntentFilter getFilter();
@Override
public void onStart(){
super.onStart();
configureReceiver()
registerReceiver(receiver, filter);
}
@Override
public void onStop(){
super.onPause();
unregisterReceiver(receiver);
}
private void registerMyReceiver(){
registerReceiver(receiver, filter);
}
private void configureReceiver(){
receiver = getReceiver();
filter = getFilter();
}
}
子クラス:
public class WifiScanner extends BaseReceiverActivity{
@Override
public void onCreate(Bundle sis){
super.onCreate(sis);
setContentView(R.layout.yourLayout);
}
@Override
public BroadCastReceiver getReceiver(){
return new YourReceiver();
}
@Override
public IntentFilter getFilter(){
return IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
}
}
私は例を開発しました抽象クラス:
抽象クラス:
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();
}
非抽象クラス which 抽象クラスを拡張:
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 !!!");
}
}
結論:
これが意味をなすことを願っています。
完成させたいHiren Partel例を挙げて回答します。
たとえば[〜#〜] god [〜#〜]は、このインターフェイス(:D)を実装することにより、地球上の彼の生き物を制御します:
_public interface َAliveCreature{
void breath();
void eat();
void move();
void die();
}
_
そして、これは1つのパブリックメソッドと1つの抽象メソッドを持つ抽象クラスliveです。
_public abstract class MammalAbstract implements َAliveCreature{
public void feedBabyWithMilk(){
log.i(TAG,"baby was fed");
}
abstract void haveDream();
//this is an abstract method and had to implement in the consumer class
}
_
そして、これは最終的に、人間に駆動されるクラスです:
_public class Human extends MammalAbstract {
@Override
void die() {
}
@Override
public void breath() {
}
@Override
public void eat() {
}
@Override
public void move() {
}
@Override
public void haveDream() {
}
}
_
ご覧のとおり、人間は抽象メソッドhaveDream()
を実装し、abstactclassインターフェイスメソッドも実装する必要がありました。したがって、これは、いくつかのメソッドを処理して追加し、残りのインターフェイスメソッドをコンシューマに渡し、ライブラリを作成するのに非常に使いやすい抽象クラスの能力です。