Sorry the title would be Overriding. Please experts, correct the title ;)
**************************
Method signature includes ...
1.Modifiers
2.Return type
3.Method name
4.Number of passing parameters and types of parameters
5.Throws clause
No doubt method name and number of passing parameters must be same.
Return type must be same or it may be the super class type in super class and sub class type in subclass.
Have a look ...
Expand|Select|Wrap|Line Numbers
- class AClass{
- public Number test(){}
- }
- class BClass extends AClass{
- @Override
- public Integer test(){}
- }
Expand|Select|Wrap|Line Numbers
- class AClass{
- public void test()throws Exception{}
- }
- class BClass extends AClass{
- @Override
- public void test()throws IoException{}
- }
Have a look at this..
Expand|Select|Wrap|Line Numbers
- class AClass{
- public void test(Interger i){}
- }
- class BClass extends AClass{
- @Override
- public void test(Number num){}
- }
I think here is no chance of ClassCastException.
Expand|Select|Wrap|Line Numbers
- AClass a = new BClass();
- a.test(new Integer(100)); //here is no chance of ClassCastException