我想帮助解决他的问题。我无法找到关于这个主题的任何内容。 (也许我在寻找错误的东西)
定义一个名为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;
}
}
答案 0 :(得分:3)
首先,m
和n
需要protected
,而不是private
(protected
是默认值)。然后做一些像:
public class B extends C {
public int m1() { return m - n; }
}
答案 1 :(得分:0)
您说,您无法更改C
课程,因为m
和n
是private
而C
没有任何获取者实际上,你实际上不能在你的子类m
中使用n
或B
。您可以做的是使用自己的B
和m
初始化您的n
课程。
这样的事情:
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
的另一种方法改变某处。