java 中子类重写父类的方法,修饰符有什么要求,请说的越多越好,以下代码,也捎带解释一下把,
为什么子类定义为private,就要把其中一个参数,改为long类型的,请详细说,本人初学,谢啦publicclassA{protectedintmethod(inta,...
为什么子类定义为private,就要把其中一个参数,改为long类型的,请详细说,本人初学,谢啦
public class A{
protected int method (int a, int b) {
return 0;
}
}
class B extends A{
private int method(int a,long b){
return 0;
}
} 展开
public class A{
protected int method (int a, int b) {
return 0;
}
}
class B extends A{
private int method(int a,long b){
return 0;
}
} 展开
3个回答
展开全部
重写要求 两个方法的方法签名相同,方法签名由方法名称和一个参数列表(方法的参数的顺序和类型)组成。至于修饰符,范围相同或者比父类的范围小即可。
所以 B的method方法根本不是重写的A 的method方法,而是重载。重载要求方法名相同,参数返回值随便改。
所以,参数不一定改成long,随便什么都是重载。也不是必须加@override,写这个表示eclipse会给你去父类检查重写的对不对,不写就自己检查呗。
重写是覆盖,就是子类的替换了父类的,正常用方法,调的是子类的,所以重写完还是一个方法
重载是写多个同名方法,但可以给的参数不同,功能类似,所以正常调哪个方法,要看参数怎么写的,跟继承无关,区别是重载后变成多个方法。
总结,你的问题本身是错误的,你还是找个正确的例子来学。这样不是越学越错么?
所以 B的method方法根本不是重写的A 的method方法,而是重载。重载要求方法名相同,参数返回值随便改。
所以,参数不一定改成long,随便什么都是重载。也不是必须加@override,写这个表示eclipse会给你去父类检查重写的对不对,不写就自己检查呗。
重写是覆盖,就是子类的替换了父类的,正常用方法,调的是子类的,所以重写完还是一个方法
重载是写多个同名方法,但可以给的参数不同,功能类似,所以正常调哪个方法,要看参数怎么写的,跟继承无关,区别是重载后变成多个方法。
总结,你的问题本身是错误的,你还是找个正确的例子来学。这样不是越学越错么?
展开全部
子类继承父类方法后,父类的方法是隐藏的,要重写必须加override关键字(也好像是overwrite),你查一下书,用哪个关键字。你这样写的这个方法是重载,不是重写。
追问
有点懂了,子类,为什么能定义成private 呢?不是子类必须比父类范围大吗?
追答
重写的时候,子类中方法的方法名、返回类型和参数表都必须与父类中相同,这样才会覆盖从父类继承过来的方法。至于修饰符,不是子类的范围必须比父类大,而是子类的范围不能比父类小,换句话说,相同是可以的。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
子类继承父类,同时继承父类的非私有属性及方法
追问
我的意思是,子类修饰符是private,如果不把其中一个参数改为long就会报错。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询