SCJP(310-055)学习之旅———抽象类也可以实例化

本文探讨了抽象类是否可以实例化的问题,通过实例演示了抽象类不仅能够实例化,还能调用抽象方法。并分析了抽象类的设计理念,解释了为何某些抽象类的方法会被实现为空。

抽象类是否可以实例化?

---------------写到哪里就说到哪里,哈哈哈!

 

1.              抽象类可以实例化。

///////////////////////

 

 

大家看到了吧,抽象类竟然可以实例化,并且还调用了自己的抽象方法。

 

我做这个实验的想法来自API文档,大家知道WindowAdapter就是一个抽象类,但是他的所有成员方法都是空实现,既然已经实现了,为什么还要表示为abstract类呢?从适配器模式的角度看的话,API设计者认为适配器类中的成员方法,如下截图

 

 

根本没有定制业务逻辑的必要!原因很简单,每种事件发生的时候,程序员所需要的业务逻辑是不一样的,API的编写者何必再画蛇添足呢,增加了代码量,最重要的是自己实现的业务逻辑,程序员却不用,多累呀!!!


其实说某一个类一旦有abstract标识符,就会被编译器认为是有没有业务逻辑(方法体)的抽象方法。这仅仅是编译器一厢情愿的观点。但话又说回来了,你不让编译器舒服了,哈哈,编译器也不会让你好过的。

 

还有一点就是一个类一旦有abstract标识符的话,在实例化时候就必须有大括号,大括号里面是抽象方法的业务逻辑的填充处。如果没有抽象方法,或者是空实现,可以不用写,但是一旦有抽象方法就必须实现,如果不实现,编译器就会报错。如下

 

 

 /////////////////

 

 

 

这个大括号与类的标识符abstract是生死相依的。

                                                                                      

判断一个类是抽象类的标准是:此类有一些方法(一个或多个)这些方法没有方法体。此时这个方法必须显示的标识为abstract,于此同时这个类也要显示的标识为abstract

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值