本帖最后由 osully 于 2014-3-15 16:03 编辑
今天复习过程中,发现很多小细节被忽略掉了.还是被忘掉了,搞不清楚!不过这个地方我估计很多人也会忽略掉或是没搞懂吧!(如下红字部分)
子类覆盖父类函数遵循的原则(一同两小一大):
(一同):函数名必须相同; (两小): 子类函数的返回值类型比父类函数的返回值类型更小或相等 子类函数声明抛出的异常应比父类函数申明抛出的异常更小或相等; (一大):子类函数的访问权限应比父类函数更大或相等;
一直我们写复写是都是写的返回值类型相等,今天看到这个更小突然迷糊了,然后自己写了几句代码发现原来是这样:
- class Person{
- private String name;
- Person(String name){
- this.name=name;
- }
- public String getName(){
- return name;
- }
- Person show(){ //父类show方法
- return new Person("wangwu");
- }
- }
- class Student extends Person{
- Student(String name) {
- super(name);
- }
- Student show(){ //子类show方法 返回值类型比父类小
- return new Student("lisi");
- }
- }
- public class JiChengDemo {
- public static void main(String[] args) {
- Person p = new Student("zhangsan");
- System.out.println(p.getName());
- System.out.println(p.show().getName());
- }
- }
复制代码
|