public class SuperClass { public static String a; public SuperClass(String a){ this.a = a+"b"; setA(a+"2b"); if(this instanceof ChildClass){ //System.out.println("b"); }else{ //System.out.println(this.getClass().getName()); } }
public String getA(){ System.out.println("super getA"); return a; }
public void setA(String a){ System.out.println("super setA"); this.a = a; } } public class ChildClass extends SuperClass{ public static String a ; public ChildClass(String a){ super(a); //this.a = a; }
public static void main(String[] args){ SuperClass a = new ChildClass("a"); ChildClass b = (ChildClass)a; System.out.println(ChildClass.a); System.out.println(SuperClass.a); }
public String getA(){ System.out.println("child getA"); return a; }
private int a=3;
f(){
//用this.a代表class1的a变量
//用super.a代表parent的a变量
}
}
子类 class class2 extends parent{
private int a=3;
f(){
//用this.a代表class2的a变量
//用super.a代表parent的a变量
}
}
这样写必须把父类的a变量设为pubic或prtected,否则子类无法直接用super.a访问父类的a,但是把变量设为pubic违背了封装性
public SuperClass(String a){
this.a = a+"b";
setA(a+"2b");
if(this instanceof ChildClass){
//System.out.println("b");
}else{
//System.out.println(this.getClass().getName());
}
}
public String getA(){
System.out.println("super getA");
return a;
}
public void setA(String a){
System.out.println("super setA");
this.a = a;
}
}
public class ChildClass extends SuperClass{ public static String a ;
public ChildClass(String a){
super(a);
//this.a = a;
}
public static void main(String[] args){
SuperClass a = new ChildClass("a");
ChildClass b = (ChildClass)a;
System.out.println(ChildClass.a);
System.out.println(SuperClass.a);
}
public String getA(){
System.out.println("child getA");
return a;
}
public void setA(String a){
System.out.println("child setA");
this.a = a;
}
}好好想想这个结果,java的父类是不能调用子类的成员变量的。