父类如下:
public class ExtendTest {
private static final String TAG = "MainActivity";
private int a = 2;
private int b = 3;
private int c = 4;
public int create() {
init(b);
return a + c;
}
private void init(int x) {
System.out.println(a + x);
System.out.println(TAG);
}
}
继承父类的子类如下:
public class TestTest extends ExtendTest {
public static void main(String[] args) {
TestTest xxx = new TestTest();
int i = xxx.create();
System.out.println(i);
}
}
此时输出为
5
MainActivity
6
以上表明的是子类虽然不能调用父类里面的private数据域,但是不影响调用父类的public方法时,父类的private数据域在父类方法里被使用
而子类也不能调用父类的private方法。但是这样的方法可以通过
子类——调用父类public方法——父类public方法调用父类private方法
这样的形式来调用。
而当采用@Override进行方法覆盖时,覆盖create方法如果再实现init方法,也是不行的。因为init方法是private
但是可以采用super.create(); 来实现父类的create方法,从而调用init
public class TestTest extends ExtendTest {
public static void main(String[] args) {
TestTest xxx = new TestTest();
int i = xxx.create();
System.out.println(i);
}
@Override
public int create(){
super.create();
return 50;//return没有被覆盖
}
}