2013-01-09 70 views
0

我有我自己的類來擴展Activity。而且我還有另外一門課程來擴展我的第一堂課。我如何從頭等艙的二級數據中獲取數據? 這是用於更好理解的模式: class1 extends Activity,class2 extends class1。現在我想從class2中獲取class1的一些數據。我怎樣才能做到這一點?從派生類中獲取數據到父類中

+1

class2可以從其父類1訪問受保護的成員。但是在其他方面沒有意義(「從class2中獲取class1中的某些數據」) – fiddler

+0

在class1中使用一些變量和setter方法(或公共變量)。 –

+0

如果派生類必須爲父類提供一些重要信息,可能會生成此類信息。 – h22

回答

2

可以設置在類1(父)的屬性和從類爲它分配2

class A { 
     protected int a; 
} 

class B extends A { 

     void method() { 
      a = 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(); 
} 
} 
0

就可以得到從派生的類數據上游到父類通過覆蓋吸氣劑:

abstract class A { 
    protected abstract int getX(); 

    void doThis() { 
    int x = getX(); 
    } 
} 

class B extends A { 
@Override 
protected int getX() { return 17; }; 
} 

如果派生類必須提供某些值,因爲沒有合理的默認值,這很有用。沒有做到這一點的類(沒有實現抽象的getter方法)根本無法編譯,錯誤信息將成爲應該完成的明確提示。對於可分配的內部字段,大部分可以做的是在運行時檢查。