对Abstract类的一点理解

我们都知道抽象类不能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有点差别,换一种说法:

抽象类是可以new的,但是不能直接new,一定要重写没有实现的方法

比如说这里边有两个方法需要override: 一个是 get(),一个是 size();

只要实现这两个方法,我们就可以把一个抽象类new出来,难道不是这样吗?当然是


那么我们接下来就讨论一下抽象类,什么是抽象类?


抽象类就是有些方法还没有实现的类.

那么问题来了,既然定义一个类,为什么不把所有的方法都实现呢?非得弄一个抽象类干嘛呢?

就是因为在定义一个类的时候,我们根据这个类可以大致确定它要实现一些什么样的功能,但是具体的功能究竟应该怎么实现却不能确定,所以就出现了抽象方法,只写方法名却不写方法体,(有头没身,想想是不是还有些小害怕呢,真是吓屎宝宝了),那么方法体留给谁来写呢?

当然是我们在编程的时候,我们根据自己的需求,需要定义一个类,但是我们发现已经存在了一个和我们需求特别像的一个抽象类,那么我们当然不会自己在写一个了,直接继承过来就行了,把里边的方法重写一下,当然还可以加上自己想要的方法,这样我们的代码量是不是就少了,这就是利用工具创造工具,让工具为我们服务,代码能复用尽量复用,(友情提示:打仗能动手,尽量别动口,哈哈哈)


这就是我对抽象类的一点浅显的理解,在此记录一下,留点记忆,要是能给小伙伴们那么一点点的启发,那也是极好的.





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值