23,405
社区成员
发帖
与我相关
我的任务
分享
//可以在子类方法中对父类属性进行修改
public class IfIsFather {
public static void main(String[] args) {
Base b1 = new Base();
System.out.println(b1.get());// 确认父类static
Sub s1 = new Sub("S");// 创建了第一个子类对象,并试图把父类中static改成了S
System.out.println(s1.get());// 查看父类对象static,发现果然改成了S
Sub s2 = new Sub();// 创建第二个子类对象
System.out.println(s2.get());// 再次查看父类对象static,发现并没有改变,证明这种办法是可以选择改或不改父类static的
Sub s3 = new Sub("A");// 创建第三个子类对象,再次试图改变父类static
System.out.println(s2.get());// 再次查看父类对象static,发现改变成了A
Base b2 = new Base();
System.out.println(b2.get());// 可怕!再创建第二个父类对象时,已经和第一个父类对象不一样了
}
}
// 父类
class Base {
private static String str = "0";
public void setStr(String str) {
Base.str = str;
}
// 此方法用来返回父类的static
public static String get() {
return str;
}
}
// 子类
class Sub extends Base {
public Sub(String s) {
super.setStr(s);
}
public Sub() {
super();
}
}
class A{
private int i;
protected int j;
public int k;
int m;
}
class B extends A{
public static void main(String[] args) {
B b = new B();
b.j = 1;
b.k = 2;
b.m = 3;
}
}