类一:
package tmp;
public class employee {
public int salary=0;
static String name=" ";
public int level=0;
public employee(String name,int level){
this.level=level;
this.name=name;
this.salary=level*10;
}
public employee(){
}
public String get_name(){
return this.name;
}
public int get_salary(){
return this.salary;
}
public int get_level(){
return this.level;
}
}
</pre><pre name="code" class="java">
继承类一:
public class Mannerage extends employee{
public Mannerage(String name){
this.name=name;
this.salary=10*4;
}
public int get_level(){
return 3;
}
}
package tmp;
public class MainP {
public static void main(String[] args) {
employee Jone=new employee("Jone",2);
Mannerage Tom=new Mannerage("Tom");
System.out.println(Jone.get_name()+" level: "+Jone.get_level()+" salary: "+Jone.get_salary());
System.out.println(Tom.get_name()+" level: "+Tom.get_level()+" salary: "+Tom.get_salary());
}
}
Tom level: 2 salary: 20
Tom level: 3 salary: 40
原因:静态成员变量只有一份:
静态变量通过实例方式访问, 和实例变量是有区别的,实例变量每个实例都有一份,而静态变量处于虚拟机内存的方法区中只有一份。通过实例来访问静态变量是通过该类的Class对象定位到方法区中的静态变量的,本质上和直接通过类名访问没有区别
上例要想正确输出:把类一中的Static String name=" " 去掉Static 即可
关于静态成员方法的使用说明:静态成员方法里面不能用this关键字,静态成员方法中不能使用动态成员变量,只能用静态成员变量.