黑马程序员技术交流社区
标题:
方法的重载和重写(总结的很不错哦)
[打印本页]
作者:
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
class A{
void fun(){}
}
class B extends A{
int fun(){}
}
复制代码
也就是说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