黑马程序员技术交流社区

标题: 方法的重载和重写(总结的很不错哦) [打印本页]

作者: 098ASD    时间: 2015-7-3 22:21
标题: 方法的重载和重写(总结的很不错哦)
重写概念:
                当子类中出现与父类中方法声明完全相同的情况,称为方法的重写。
重载和重写区别:
                方法重载:在同一个类中(这个是重点),出现方法名相同,参数列表不同的多个方法。与返回   值类型无关。
                方法重写:在子父类间,出现方法声明完全相同(返回值类型、方法名、参数列表等)都相同的两个方法,称为重写。
                @Override -- 方法的上面, 这个方法就是重写父类的.

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

        覆盖的应用:
                当子类需要父类的功能,而功能主体子类有自己特有内容时,
                可以复写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容。(用自己的话解释沿袭了父类的功能,定义了子类特有的内容)
作者: samove    时间: 2015-7-4 23:49
一二三四五六七八九十正好十五字
作者: 东东的一些事    时间: 2015-7-4 23:55
学习了,总结得好。
作者: home7192    时间: 2015-7-5 01:20
学习了,复习一下!
作者: zhangxin    时间: 2015-7-5 08:14
  1. class A{
  2.       void fun(){}
  3. }
  4. class B extends A{
  5.       int fun(){}
  6. }
复制代码

也就是说B类没有重写A类的fun方法,因为返回值类型不同,对吗楼主
作者: samove    时间: 2015-7-5 08:56
zhangxin 发表于 2015-7-5 08:14
也就是说B类没有重写A类的fun方法,因为返回值类型不同,对吗楼主

报错,B中的fun无法覆盖A中的fun,这里方法名相同了,就必须重写,B中可以不写fun方法,写了就要一样的返回值类型。
这么说吧,假如这个成立,那肯定不是重写了,那么好,A a = new B();
a.fun();   这个会调用谁呢,因为方法名是一样的,但返回值类型不同,程序就不知道是要返回还是不返回了,他就会郁闷的,就会出事,所以这个是不可以这么干。
作者: Miss.H    时间: 2015-7-5 09:15
还没学到这  但还是看看....头大ing
作者: 小糊涂仙    时间: 2015-7-5 11:22
谢谢分享
作者: dajiaoya    时间: 2015-7-5 13:13
分享快乐
作者: wengjialiang    时间: 2015-7-5 15:47
学习了,复习一下!谢谢分享
作者: 为了理想而奋斗    时间: 2015-7-5 16:53
谢谢分享。
作者: 825176857    时间: 2015-7-5 16:56
为什么我总结了没有人回:'(
作者: zhangxin    时间: 2015-7-6 13:35
重载不一定是子类中的方法,也可以重载父类中的方法




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