今天看书,看到super与this的地方,按照书里的例子,写了一个程序,些程序由两个java源程序组成,分别为Supers.java与Thiss.java。以下分别是它们的代码。
Supers.java的代码为:
public class Supers{
    String name="Supers";
    void read(){
        System.out.println("Supers.read");
    }
}
Thiss.java的代码为:
public class Thiss extends Supers{
    String name="Thiss";
    void read(){
        System.out.println("Thiss.read");
    }
    void test(){
        String name="in";
        System.out.println("name="+name); 
        System.out.println("This.name="+this.name);
        System.out.println("Super.name="+super.name);
        read();
        this.read();
        super.read();
    }
    public static void main(String[] args){
        Thiss lx1= new Thiss();
        lx1.test();
        System.out.println(lx1.super.name);
    }
}
结果编译出错,错误提示为:
F:\java\06>javac Thiss.java
Thiss.java:18: 找不到符号
符号: 类 lx1
位置: 类 Thiss
        System.out.println(lx1.super.name);
                           ^
1 错误
但只要我把“System.out.println(lx1.super.name);”这个地方去掉,程序就正确,请问个位网友,这是为什么?为什么只能在构造方法中使用super与this关键字,而在主入口的地方使用不了,如果我想在主入口的地方使用,程序要怎么改?谢谢!

解决方案 »

  1.   

    明白了,super与this只能用在子类与构造方法里,不能用在静态代码块里!
      

  2.   

    类方法中不能使用super,this 关键字;super 不能用于静态方法中(类方法)中,因为静态方法只能访问静态变量(类变量;
      

  3.   

    super 必须写在方法的最前面
      

  4.   

    this一般是指当前类里面的 属性和变量 方法;用this
    而super 常常用来调用父类的方法(已经覆盖的方法)。
    试试看吧
     希望对楼主你有帮助
    ^_*
      

  5.   

    super父类对象的引用
    this当前对象的引用
      

  6.   

    super父类对象的引用 
    this当前对象的引用 同意楼上观点
      

  7.   

    super调用父类的引用this当前对象应用。我只知道这些
      

  8.   

    super是对父类方法,对象的引用,this适用于当前类里面的当前对象的引用。super和this不能同时出现,而且super只能出现在方法踢得第一句,去调用父类的方法。