A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© osully 金牌黑马   /  2014-3-15 15:57  /  667 人查看  /  1 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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. }
复制代码




评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

1 个回复

倒序浏览
谢谢!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马