dee*_*ode 9 android abstract-class abstract-methods
我试图在Android中设计一个抽象类和方法,并通过从我的父Activity类扩展类来调用这些方法,但我不知道如何调用我的抽象方法.
MyCode:
MainActivity.java
public class MainActivity extends MyActivity {
@Override
public void onTest() {
Log.d("MyLog", "onTest");
} }
Run Code Online (Sandbox Code Playgroud)
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(); }
Run Code Online (Sandbox Code Playgroud)
所以这是上面的代码片段,请告诉我,如何在Android中使用Abstract,因为我之前从未这样做过.
Hir*_*tel 39
我开发了抽象类的示例:
抽象类:
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();
}
Run Code Online (Sandbox Code Playgroud)
非抽象类,其扩展抽象类:
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 !!!");
}
}
Run Code Online (Sandbox Code Playgroud)
结论:
希望这一点有道理.
Ken*_*nji 12
我想用一个例子来完成Hiren Partel Answer.
例如,GOD通过实现此接口(:D)控制他在地球上的生物:
public interface ?AliveCreature{
void breath();
void eat();
void move();
void die();
}
Run Code Online (Sandbox Code Playgroud)
这是具有一个公共方法和一个抽象方法的抽象类实时:
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
}
Run Code Online (Sandbox Code Playgroud)
这最终是驱动类,人类:
public class Human extends MammalAbstract {
@Override
void die() {
}
@Override
public void breath() {
}
@Override
public void eat() {
}
@Override
public void move() {
}
@Override
public void haveDream() {
}
}
Run Code Online (Sandbox Code Playgroud)
你可以看到人类必须实现抽象方法haveDream(),并实现abstactclass接口方法!所以这是一个抽象类的强大功能,它可以处理和添加一些方法,并将其余的接口方法传递给使用者,并且非常完全用于编写库.
这是一个示例,可用于使用Abstract类注册和注销ANY BroadcastReceiver:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
子班:
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));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26927 次 |
| 最近记录: |