super
import java.util.*;
class test0{
public int i=0;
}
class test1 extends test0{
public int i=1;
public test1(){}
public void f(){
super.i=100;
}
}
public class HelloWorld {
public static void main(String[] args) {
test1 t=new test1();
t. f();
System.out.println(t.i);
}
}
注意这里用super理论上是在改变父类的i,但其实这里i同名,编译器会认为这里的i还是子类的i所以:
class test0{
public int x=0;
}
class test1 extends test0{
public int i=1;
public test1(){}
public void f(){
super.x=100;
}
}
public class HelloWorld {
public static void main(String[] args) {
test1 t=new test1();
t. f();
System.out.println(t.x);
}
}
上面都是最初思路有错误
import java. util. *;
class GeometricObject{
public int i=0;
}
class Circle extends GeometricObject {
public int i=1;
public void f(){
super. i=100;
// int fu=super.i;
System. out. println("zilei:"+i);
System. out. println("fulei:"+super.i);
}
}
public class Test {
public static void main(String args[]) {
Circle c = new Circle();
c. f();
}
}
super就近原则才会正确显示