我们都知道抽象类不能new一个实例,为什么不能new呢?
其实是可以new的,但是new之后的格式却和普通类new的格式不一样,for example:
AbstractList 是一个抽象类,我new出来是这样的:
AbstractList a=new AbstractList() {
@Override
public Object get(int index) {
// TODO Auto-generated method stub
return null;
}
@Override
public int size() {
// TODO Auto-generated method stub
return 0;
}
};
抽象类是可以new的,但是不能直接new,一定要重写没有实现的方法
比如说这里边有两个方法需要override: 一个是 get(),一个是 size();
只要实现这两个方法,我们就可以把一个抽象类new出来,难道不是这样吗?当然是
那么我们接下来就讨论一下抽象类,什么是抽象类?
抽象类就是有些方法还没有实现的类.
那么问题来了,既然定义一个类,为什么不把所有的方法都实现呢?非得弄一个抽象类干嘛呢?
就是因为在定义一个类的时候,我们根据这个类可以大致确定它要实现一些什么样的功能,但是具体的功能究竟应该怎么实现却不能确定,所以就出现了抽象方法,只写方法名却不写方法体,(有头没身,想想是不是还有些小害怕呢,真是吓屎宝宝了),那么方法体留给谁来写呢?
当然是我们在编程的时候,我们根据自己的需求,需要定义一个类,但是我们发现已经存在了一个和我们需求特别像的一个抽象类,那么我们当然不会自己在写一个了,直接继承过来就行了,把里边的方法重写一下,当然还可以加上自己想要的方法,这样我们的代码量是不是就少了,这就是利用工具创造工具,让工具为我们服务,代码能复用尽量复用,(友情提示:打仗能动手,尽量别动口,哈哈哈)
这就是我对抽象类的一点浅显的理解,在此记录一下,留点记忆,要是能给小伙伴们那么一点点的启发,那也是极好的.