Java 覆盖方法
我想帮助解决他的问题。我找不到关于这个话题的任何东西。(也许我找错东西了) 定义一个名为B的C的子类,它重写方法Java 覆盖方法,java,methods,overriding,Java,Methods,Overriding,我想帮助解决他的问题。我找不到关于这个话题的任何东西。(也许我找错东西了) 定义一个名为B的C的子类,它重写方法m1(),以便返回m和n之间的差 public class C { private int m; private int n; public C(int mIn, int nIn) { m = mIn; n = nIn; } public int m1() { return m+n
m1()
,以便返回m和n之间的差
public class C
{
private int m;
private int n;
public C(int mIn, int nIn)
{
m = mIn;
n = nIn;
}
public int m1()
{
return m+n;
}
}
首先,
m
和n
需要保护
,而不是私有
(保护
是默认设置)。然后做一些类似的事情:
public class B extends C {
public int m1() { return m - n; }
}
您说过,您不能更改
C
类,而且由于m
和n
是private
并且C
没有任何getter和setter,您实际上不能在子类B
中使用m
或n
。您可以做的是用自己的m
和n
初始化B
类。
诸如此类:
public class B extends C{
private int bm;
private int bn;
public B(int mIn, int nIn){
super(mIn,nIn);
this.bm=mIn;
this.bn=nIn;
}
@Override
public int m1(){
// and then you can use the B's n and m
return this.bm - this.bn;
}
}
然后你可以这样做:
C myClass = new B( 1, 2);
int difference = B.m1();
但是,如果
C
类中存在任何不同的情况,这可能不起作用。当不允许更改C
时,在正常情况下,您甚至不知道C
到底是什么样子,尤其是它没有变量m
和n
,或者它们是否在C
的另一种方法中发生了更改 您尝试过哪些代码?在google上搜索“java override”的第三个结果->您面临的问题是什么?你不知道怎么做吗?欢迎你这么做。请阅读和,以获取编写好的SO问题的提示。@RobertAnthonySvec:“非常困惑”不是一个非常有用的描述;)具体来说,你对什么感到困惑?通常不赞成直接解决(明显的)家庭作业问题……我不能把私人问题变成公共问题或受保护的问题。我不允许更改Cclass@Oli查尔斯沃思:你说得对,这不是一个家庭作业论坛。但另一方面,一个直接的解决方案(理解)比一些评论要好得多,因为这个问题还不够好。谢谢@GameDroids,我有点明白,但我不能改变C类