Java:方法的继承
Java: Inheritance of method
我有两个类:
abstract class A
{
private int a;
protected int get(){return a;}
}
class B extends A
{
private int a = 2;
}
我想要的是继承 get() 方法,它会给我结果 2 而不是 0。我知道为什么这段代码不起作用,但不知道是否有可能在 java.
您可以在 class B
中覆盖 get()
:
class B extends A
{
private int a = 2;
@Override
protected int get() {
return a;
}
}
这样,在 class B
的实例上调用 get()
将 return B
的 a
成员。
如果您不想覆盖 get()
方法,您可以将值传递给构造函数中的 a
属性:
abstract class A {
private int a;
protected A(int a) {
this.a = a;
}
protected int get() {
return this.a;
}
}
class B
extends A {
B() {
super(2);
}
public static void main(String[] args) {
B b = new B();
System.out.println(b.get()); // 2
}
}
如果您使用 getA()
这样的访问器,您可以使用 get()
及其所有功能,只要 get()
定义中的任何代码都使用 getA()
来获取 a 的值而不仅仅是使用 a
.
小例子:
abstract class A
{
private int a;
protected int get(){
// do anything with getA(), here just return the value as in your question.
return getA();
}
public int getA(){ return a; }
}
class B extends A
{
private int a = 2;
@Override
public int getA(){ return a; }
}
我有两个类:
abstract class A
{
private int a;
protected int get(){return a;}
}
class B extends A
{
private int a = 2;
}
我想要的是继承 get() 方法,它会给我结果 2 而不是 0。我知道为什么这段代码不起作用,但不知道是否有可能在 java.
您可以在 class B
中覆盖 get()
:
class B extends A
{
private int a = 2;
@Override
protected int get() {
return a;
}
}
这样,在 class B
的实例上调用 get()
将 return B
的 a
成员。
如果您不想覆盖 get()
方法,您可以将值传递给构造函数中的 a
属性:
abstract class A {
private int a;
protected A(int a) {
this.a = a;
}
protected int get() {
return this.a;
}
}
class B
extends A {
B() {
super(2);
}
public static void main(String[] args) {
B b = new B();
System.out.println(b.get()); // 2
}
}
如果您使用 getA()
这样的访问器,您可以使用 get()
及其所有功能,只要 get()
定义中的任何代码都使用 getA()
来获取 a 的值而不仅仅是使用 a
.
小例子:
abstract class A
{
private int a;
protected int get(){
// do anything with getA(), here just return the value as in your question.
return getA();
}
public int getA(){ return a; }
}
class B extends A
{
private int a = 2;
@Override
public int getA(){ return a; }
}