今天是第一阶段的技能考核,考的题目倒是不难,但是还是有问题,比如说细节的问题还有平时容易疏忽的知识点,以下就是我觉得自己出错的地方。
第一个问题,平时没大注意,这次考到之后给我提了个醒,要懂得将知识点前后联系起来。
1.什么是方法覆盖(override)?并说明方法覆盖与方法重载(overioad)的区别?
覆盖:子类继承了父类的同名无参函数。当子类从父类继承了一个无参函数,而又定义了一个同样的无参函数,则子类定义的方法覆盖父类的方法,称为覆盖。
重载:就是子类从父类中继承的同名方法,子类可以在这方法中重新定义自己的方法的实现。是子类对父类方法的再载入
重载:一个类中,具有多个方法,这些方法的名称相同,但是方法签名不一样(也就是形参的类型和个数及返回值不一样),这就叫方法的重载。
重载:子类继承了父类的同名有参函数。当子类继承了父类的一个同名方法,且方法参数不同,称为重载。通过方法的重载,子类可以重新实现父类的某些方法,使其具有自己的特征。
方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现。重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态性的一种表现。
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型或有不同的参数次序,则称为方法的重载(Overloading)。不能通过访问权限、返回类型、抛出的异常进行重载.
第二个问题是对try/catch/finally了解的不够全面。
1、说明try/catch/finally语句块的作用?
该结构是用来捕捉异常信息的 ,异常来源于try块中, 在catch中进行处理 finally可以对资源进行释放或其他操作
a. 假如 在try中没有异常产生,并return finally 仍然会执行, 将return 的结果保存,执行完finally在return
b .在1的基础上,如果 finally中最后也return 那个,try中的return会失效 ,执行finally中return
c.如果try 或者catch(有异常的情况下)中不是return 而是写的是 System.exit(0); 那么finally此时不执行,直接关闭虚拟机。
d.在2的基础上,如果finally中嵌套 try finally结构的话 ,执行完 finally里面的try 在执行 finally中的finally
e . 在4的基础上 如下代码会产生错误
try{
}catch(){
}finally{
try{
}catch(){
}finally{
return 1;
}
return 0;
}
因为finally要求代码必须被执行,虚拟机此时不知道 return1必须被执行,还是return 0 必须被执行.
这两个问题是是比较明显的问题,还有很多的地方需要再继续改进,加油。