我有自己的类,它扩展了Activity。我有另一个课程,扩展了我的第一堂课。我怎样才能从头等舱获得二等数据? 这是用于更好理解的模式: class1扩展了Activity,class2扩展了class1。现在我想在class1中获取class2中的一些数据。我怎么能这样做?
答案 0 :(得分:2)
您可以在第1类(父级)中设置属性,并从第2类
中进行分配 class A {
protected int a;
}
class B extends A {
void method() {
a = 1;
}
}
答案 1 :(得分:0)
class A {
private int x = 5;
protected int getX() {
return x;
}
protected void setX(int x) {
this.x = x;
}
public void print() {
// getX() is used such that
// subclass overriding getX() can be reflected in print();
System.out.println(getX());
}
}
class B extends A {
public B() {
}
public static void main(String[] args) {
B b = new B();
b.setX(10);
b.print();
}
}
答案 2 :(得分:0)
您可以通过覆盖getter来从派生类上游到父类中获取数据:
abstract class A {
protected abstract int getX();
void doThis() {
int x = getX();
}
}
class B extends A {
@Override
protected int getX() { return 17; };
}
如果派生类必须提供某些值,因为没有合理的默认值,这很有用。无法执行此操作的类(不实现抽象getter方法)根本无法编译,错误消息将是应该完成的明确提示。使用可分配的内部字段,您可以做的最多就是在运行时检查。