通过子类调用父类的变量,有两种方法:
1.把父类的变量设置成public:
package triangle.opengl.wlz.stu.childusefathervariable;
import android.util.Log;
public class BasePublicVariable {
private String TAG = getClass().getName();
public int data;
public void ptData(){
Log.d(TAG, "ptData: " + data);
}
}
当我们这样做时,需要时直接在对象中设置这个变量的值就可以了,子类不需要任何处理:
package triangle.opengl.wlz.stu.childusefathervariable;
import triangle.opengl.wlz.stu.childusefathervariable.BasePublicVariable;
public class ChildPublicVariable extends BasePublicVariable {
}
2.通过构造方法透传:
package triangle.opengl.wlz.stu.childusefathervariable;
import android.util.Log;
public class BaseVariableInConstructed {
private String TAG = getClass().getName();
private int data;
public BaseVariableInConstructed(int data){
this.data = data;
}
public void ptData(){
Log.d(TAG, "ptData: " + data);
}
}
这时,子类可以使用super方法,调用父类的构造方法:
package triangle.opengl.wlz.stu.childusefathervariable;
import android.util.Log;
public class ChildVaralbleInConstructed extends BaseVariableInConstructed {
public ChildVaralbleInConstructed(int data) {
super(data);
}
}
最终的使用方式:
package triangle.opengl.wlz.stu.childusefathervariable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
test();
}
private void test(){
ChildVaralbleInConstructed base = new ChildVaralbleInConstructed(100);
base.ptData();
ChildPublicVariable base2 = new ChildPublicVariable();
base2.data = 10;
base2.ptData();
}
}