黑马程序员技术交流社区

标题: 子类覆盖父类函数容易被忽略的一句话 [打印本页]

作者: osully    时间: 2014-3-15 15:57
标题: 子类覆盖父类函数容易被忽略的一句话
本帖最后由 osully 于 2014-3-15 16:03 编辑

今天复习过程中,发现很多小细节被忽略掉了.还是被忘掉了,搞不清楚!不过这个地方我估计很多人也会忽略掉或是没搞懂吧!(如下红字部分)


子类覆盖父类函数遵循的原则(一同两小一大)
(一同):函数名必须相同;
(两小):
子类函数的返回值类型比父类函数的返回值类型更小或相等   
子类函数声明抛出的异常应比父类函数申明抛出的异常更小或相等;
(一大):子类函数的访问权限应比父类函数更大或相等;

一直我们写复写是都是写的返回值类型相等,今天看到这个更小突然迷糊了,然后自己写了几句代码发现原来是这样:

  1. class Person{
  2.         private String name;
  3.         Person(String name){
  4.                 this.name=name;
  5.         }
  6.         public String getName(){
  7.                 return name;
  8.         }
  9.         Person show(){   //父类show方法
  10.                 return new Person("wangwu");
  11.         }
  12. }

  13. class Student extends Person{
  14.         Student(String name) {
  15.                 super(name);
  16.         }
  17.         Student show(){   //子类show方法  返回值类型比父类小
  18.                 return new Student("lisi");
  19.         }
  20. }
  21. public class JiChengDemo {
  22.         public static void main(String[] args) {
  23.                 Person p = new Student("zhangsan");
  24.                 System.out.println(p.getName());
  25.                 System.out.println(p.show().getName());
  26.         }
  27. }
复制代码





作者: 2528870651    时间: 2014-3-16 14:26
谢谢!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2