抽象类那点事

来源:互联网 发布:电脑机器码修改软件 编辑:程序博客网 时间:2024/06/14 21:37

1、抽象类?如果好听的中文名字,到底什么是抽象类?

答:首先抽象类也是个类,多了抽象二字,继续简单粗暴起来,拥有抽象方法的类,我可以称作它为抽象类。。

public abstract class AbsFirst {public abstract void walk(); //只要你声明了抽象方法,那么你的这个类,就必须是抽象类类}

2、语法

答:在class前面加上关键字abstract,就ok啦,是不是很爽!


3、普通类与抽象类最主要的啥差别啊?

答:

a、抽象类有抽象方法,普通类没有(我这说答算废话不?不算吧,记得抽象类只是多了个抽象方法,其它的普通类一样,除了b,往下看)

b、抽象类不能生成实例对象,普通类必须可以嘛(不然……)

public abstract class AbsFirst {public AbsFirst() {super();}public abstract void walk(); //只要你声明了抽象方法,那么你的这个类,就必须是抽象类类}
看看上面的例子?不禁要问:既然不能生成实例对象(不能new出来),那为啥还有构造方法昵?

答案:构造方法是给扩展类用的啦,就是给子类用的啦。。


4、抽象类有了?咱咋用啊?

答:继承(中文还可以叫扩展)。

public abstract class AbsFirst {public AbsFirst() {super();}public abstract void walk(); //只要你声明了抽象方法,那么你的这个类,就必须是抽象类类public class Test extends AbsFirst {  //偷个懒,用个静态内部类,而且我还整个public,哈哈,例子仅为方便,我就没去再单写一个文件@Overridepublic void walk() {}}}


5、抽象类不光被继承,抽象类本身还可以继承一个抽象类(我刚才说了,抽象类最最重要与普通类的区别之一就是必须有抽象方法,所以这也不足为奇了)

public abstract class AbsFirst {static int a;public  static void  fk() {}public AbsFirst() {super();}public abstract void walk(); //只要你声明了抽象方法,那么你的这个类,就必须是抽象类类public abstract class Test extends AbsFirst {  //偷个懒,用个静态内部类,而且我还整个public,哈哈,例子仅为方便,我就没去再单写一个文件public abstract void jump(); //又有抽象方法@Overridepublic void walk() {}}}


6、有一条语法规则,很有意思:如果你的类继承于一个抽象类,但是你不实现其中的抽象方法,那么你的这个类必须还是抽象类。(拿到了抽象方法,不去实现)依然要做抽象类,比较骄傲哈!


7、屌丝屌丝,我确实比较屌丝,深入要慢,思路要清,抽象类的基本语法就搞到这里吧

答:补充个下面是抽象方法,即 方法返回值前面加个abstract关键字就是个抽象方法了,抽象方法声明即可,;分号代表该语句结束,必须的…………我废话好多…………

public abstract void walk();


8、日后我会再将知识扩充,争取人人看得懂,人人学得会……


9、补充一点哦,抽象类也可以不含有抽象方法哦

public abstract class ActionBarActivity extends Activity {    final ActionBarHelper mActionBarHelper = ActionBarHelper.createInstance(this);    /**     * Returns the {@link ActionBarHelper} for this activity.     */    protected ActionBarHelper getActionBarHelper() {        return mActionBarHelper;    }    /**{@inheritDoc}*/    @Override    public MenuInflater getMenuInflater() {        return mActionBarHelper.getMenuInflater(super.getMenuInflater());    }    /**{@inheritDoc}*/    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        mActionBarHelper.onCreate(savedInstanceState);    }    /**{@inheritDoc}*/    @Override    protected void onPostCreate(Bundle savedInstanceState) {        super.onPostCreate(savedInstanceState);        mActionBarHelper.onPostCreate(savedInstanceState);    }    /**     * Base action bar-aware implementation for     * {@link Activity#onCreateOptionsMenu(android.view.Menu)}.     *     * Note: marking menu items as invisible/visible is not currently supported.     */    @Override    public boolean onCreateOptionsMenu(Menu menu) {        boolean retValue = false;        retValue |= mActionBarHelper.onCreateOptionsMenu(menu);        retValue |= super.onCreateOptionsMenu(menu);        return retValue;    }    /**{@inheritDoc}*/    @Override    protected void onTitleChanged(CharSequence title, int color) {        mActionBarHelper.onTitleChanged(title, color);        super.onTitleChanged(title, color);    }}
这是google官方的一个ActionBar的例子,里面完全木有抽象方法哦





0 0