java类挖空:
分类:
(1)开头挖空——看子类和父类是什么关系?
分析考点:
①所在是否为抽象类(abstract)?(抽象类的判断:看后面的子类是否继承了该类,标志为extends)
②所在是否为接口(interface)?(接口的判断:接口需要实现,标志为implements)
可参考:
abstract class和interface的区别
(2)抽象类(abstract class)内部挖空
分析考点:
①方法内赋值:看见类似public void setPizzaBuilder(AAA aaa) {答案很可能是 this.aaa=aaa;或者是this开头 }
②填写方法名:
一般在后面的子类中,会再次出现该方法。
方法名和返回类型很容易确定,但是需要确定该方法是否为抽象方法:
抽象方法:多个该抽象类的子类可能会有不同的实现
普通方法:实现基本一致
③创建一个类的引用、申明对象
可参考:
java 申明对象和new一个对象如: People peple和People people=new People()
(3)接口(interface)内部挖空
和抽象类内部挖空相似,接口内挖空的一般需要定义方法/常量,而方法名是可以在后面代码中的implements中找到的。
特别需要注意的是:
①定义接口中的方法时,不能漏了参数。(参数可能需要填写,也可能不需要。此处参数的填写,请参考后面方法的具体实现中的参数)
②定义接口中的方法时,方法类型需要参考后面方法的具体实现(不是所有的方法类型都可以无脑写public void/int…)
【以上两点可参考12年下半年的下午题6】
(4)实现类内部挖空
考点:
①类的实例化
注意:
抽象类不能实例化!(对象实例化可以选取继承自抽象类的子类)
一般使用new来实例化。
②假设接口的定义(interface)前有一个类A(类A中定义了一些变量和方法)
而在后面接口的实现中(implements)中又实例化了类A。
此时,如果不知道这个接口的实现中,被挖空的方法名写什么,则要考虑这里是否使用到了类A的方法?
(特别注意:注意调用类的方法的代码的写法:对象名.方法名(参数)
)
【这一点可参考18年上半年的下午题6:空(3)、(4)】
(5)整段挖空
这种情况下,一般需要填写一个抽象类/接口的定义。
具体要写的是抽象类or接口?根据以下两点判断:
(1)看题中一开始给的UML图,找出聚合、组合、依赖关系
(2)看代码段前后出现的是extends,还是implements?
搭建出外部框架(抽象类or接口)后,里面需要填写的也就是方法or属性了,具体可以参考本篇(2)(3)点。
(Finally)一些补充
参考:
https://www.it610.com/article/1283335050271670272.htm