关于方法的重写的测试
2010-04-22 22:34
162 查看
package pkg1; public class Jupiter{ void method1(){ System.out.println("In Jupiter"); } public void call(){ method1(); } } Java code package pkg2; import pkg1.Jupiter; public class Minerva extends Jupiter{ public void method1(){ System.out.println("In Minerva"); } public static void main(String[] args) { new Minerva().call(); } } 这个程序的运行结果是(请选择): A 编译错误 B In Jupiter C In Minerva D In Jupiter In Minerva |
如果两个类放同一个包 答案为C 如果放在不同的包答案为B 所以原题答案为B
我的分析:
父类的method1 方法是default的修饰符 也就是friendly的修饰符 这个修饰符权限是包级的 在同一个包的类可以访问它 在不同的包不能访问 这个也就是出现上面两个不同答案的原因
下附方法重写和重载的规则:
重写方法的规则: 1.参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载
2.返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载
3.访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
4.重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常.例如: 父类的一个方法申明了一个检查异常IOException,在重写这个方法时就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常(unchecked exception,如运行时异常)
5.要成功重写父类方法,子类必须有访问父类被重写方法的权限,如 假设一父类方法为final 当子类试图重写它时 会出现编译器报错 当父类的某一方法为private时,子类不能重写父类该方法,此时在子类中定义的试图重写的方法仅相当于一个新的方法,与父类中的该方法没有任何关系.
重载方法的规则:
1.必须具有不同的参数列表
2.可以有不同的返回类型,只要参数列表不同就可以了
3.可以有不同的访问修饰符
4.可以抛出不同的异常
相关文章推荐
- 关于用Android的API重写drawRegion方法的代码
- 面试常见的功能测试考试题关于测试方法的
- 关于重写 toString() 方法
- 关于测试方法
- 关于输入框测试方法
- 关于toString方法的重写工具ToStringBuilder
- 关于LayoutInflate.inflate()方法的测试
- 关于使用JSPatch重写setter方法
- 关于Android中ScrollView嵌入ListView重写OnMeasure后ListView在顶端的解决方法
- 关于VS2005中DataAdapter的Fill方法的连接是否会自动关闭的测试
- C#学习分享 关于类方法的隐藏与重写
- 关于重写equals,hashcode以及compareTo方法
- 关于flashdevelop测试flex项目时trace不出的解决方法
- 关于hashcode和equals方法重写的一些理解!
- 关于子类重写父类方法override
- 关于override 与new 重写父类虚方法的一些看法(new与virtual共存)
- 关于object类的两个重要方法以及为什么重写equals一定要重写hashcode()
- 【学习日志】关于Python web开发测试驱动方法
- 关于编写有效测试用例的思考和方法- 第一篇 优秀测试用例标准
- 关于继承Fragment后重写构造方法而产生的错误