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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

重写概念:
                当子类中出现与父类中方法声明完全相同的情况,称为方法的重写。
重载和重写区别:
                方法重载:在同一个类中(这个是重点),出现方法名相同,参数列表不同的多个方法。与返回   值类型无关。
                方法重写:在子父类间,出现方法声明完全相同(返回值类型、方法名、参数列表等)都相同的两个方法,称为重写。
                @Override -- 方法的上面, 这个方法就是重写父类的.

        需要注意的问题:
                父类中的私有方法不可以被重写。
                子类方法访问权限一定要大于等于父类方法访问权限
                        访问权限修饰符从小到大:
                                private -- 默认(什么也不写) -- protected -- public
                静态的方法只能被静态方法重写。这个其实不能算对象的关系。
                如果想使用父类被覆盖的功能,可以使用 super.方法名()  来调用.

        覆盖的应用:
                当子类需要父类的功能,而功能主体子类有自己特有内容时,
                可以复写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容。(用自己的话解释沿袭了父类的功能,定义了子类特有的内容)

12 个回复

倒序浏览
一二三四五六七八九十正好十五字
回复 使用道具 举报
学习了,总结得好。
回复 使用道具 举报
学习了,复习一下!
回复 使用道具 举报
  1. class A{
  2.       void fun(){}
  3. }
  4. class B extends A{
  5.       int fun(){}
  6. }
复制代码

也就是说B类没有重写A类的fun方法,因为返回值类型不同,对吗楼主
回复 使用道具 举报
zhangxin 发表于 2015-7-5 08:14
也就是说B类没有重写A类的fun方法,因为返回值类型不同,对吗楼主

报错,B中的fun无法覆盖A中的fun,这里方法名相同了,就必须重写,B中可以不写fun方法,写了就要一样的返回值类型。
这么说吧,假如这个成立,那肯定不是重写了,那么好,A a = new B();
a.fun();   这个会调用谁呢,因为方法名是一样的,但返回值类型不同,程序就不知道是要返回还是不返回了,他就会郁闷的,就会出事,所以这个是不可以这么干。
回复 使用道具 举报
还没学到这  但还是看看....头大ing
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
分享快乐
回复 使用道具 举报
学习了,复习一下!谢谢分享
回复 使用道具 举报
为了理想而奋斗 来自手机 中级黑马 2015-7-5 16:53:22
11#
谢谢分享。
回复 使用道具 举报
为什么我总结了没有人回:'(
回复 使用道具 举报
重载不一定是子类中的方法,也可以重载父类中的方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马