再探Java子类方法重写父类方法遵循“两同两小一大”规则
来源:互联网 发布:mysql check约束 编辑:程序博客网 时间:2024/05/28 18:44
今天在牛客碰到这样一道题:
class A {public A foo() {return this;}}class B extends A {public A foo() {return this;}}class C extends B{ //这样填写什么代码不会报错}
选项分别是:
A.public void foo(){}
B.public int foo(){return 1;}
C.public A foo(B b){return b;}
D.public A foo(){return A;}
复习一下子类方法重写父类方法遵循“两同两小一大”的规则
子类覆盖父类要遵循“两同两小一大”
“两同”即方法名相同,形参列表相同
“两小”指的是子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等。
(注:看到有网友有这样的疑问,父类方法返回值是double,子类修改成int为什么不行呢?
这是因为返回值类型更大或者更小,是对于同一类型而言的。也就是说,返回值的类型需要有继承关系才去考虑大小这个概念。类型不同,肯定不是方法重写)
“一大”指的是子类方法的访问权限应比父类方法的访问权限更大或相等。
注意:覆盖方法和被覆盖方法要么都是类方法,要么都是实例方法,不能一个是类方法一个是实例方法,否则编译出错。
所以,根据这个原理,再来分析上面这道题。
A.public void foo(){}返回值类型与父类不一致,所以不可能是方法的重写。又因为方法名相同,那么只能是方法重载,而方法重载有需要满足三个条件:形参个数、顺序、类型必须有一者不同,A选项都不满足,错
B.public int foo(){return 1;}与A选项一样
C.public A foo(B b){return b;}返回值类型与父类相同,但由于参数列表不同,所以是对父类方法的重载
D.public A foo(){return A;}
语法错误
阅读全文
0 0
- 再探Java子类方法重写父类方法遵循“两同两小一大”规则
- 子类重写父类的方法需要遵循以下规则:
- java中重写方法应遵循规则
- JAVA子类方法重写父类方法
- Java中重写方法应该遵循的规则包括
- java中方法的重写的两同两小一大原则
- 例题:子类重写父类方法后的调用规则
- 子类重写父类方法后的调用规则
- java 子类重写父类的方法
- java 子类重写父类的方法
- java 子类重写父类的方法
- Java方法重写规则
- java方法重写规则
- Java中子类重写父类方法的思想本质!
- Java调用子类重写方法
- 方法的重写(override)两同两小一大原则
- java中子类继承父类方法及调用规则
- 关于子类重写父类方法override
- 异议申请流程
- Windows服务器上完成Let’s Encrypt免费SSL证书的自动化更新部署(apache)
- CString转成char*
- 如何使用命令在navicat中创建数据库及表
- Windows socket之Select模型开发
- 再探Java子类方法重写父类方法遵循“两同两小一大”规则
- 在windows上部署使用Redis
- Python+Selenium 自动化实现实例-获取页面元素信息
- overflow:hidden
- Android Wi-Fi 系统源码wifiSettings源码分析(Android 5.1 Base)
- 使用JS监听鼠标滚轮事件,并且滑动一次只执行一次事件方法
- kafka 工作原理介绍
- java读取application.propertis属性文件
- 开博啦~