super和this与实例及静态变量的关系

super和this的使用实质必须建立在对象实例已经生成的基础上,
而静态变量不需要类实例就能使用。
例如:
1.public class T1 extends T{
 int m = 10;
 public static void main(String[] args){
  T1 t = new T1();
  System.out.print(this.m); 
 } 
}//此例将会报错,首先this指代不明(t没有用this),
//一般情况下this不用在public static void mian(String[] args)中
改正:
public class T1 extends T{
  static int m = 10;
  public void n(){
   System.out.print(this.m);
  }
 public static void main(String[] args){
  T1 t = new T1();
  t.n(); 
 } 
}//this并非不能引用static变量,但必须this指向了实例对象,且实例
//对象中含有该static对象
2同理super:
public class T1 extends T {
 public static void main(String[] args){
  System.out.print(super.m);
 } 
}
class T{
  static int m = 10;
}//此例同样会报错,super没有所指向的实例
改正:
    public class T1 extends T {
 public void n(){
  System.out.print(super.m);
 }
 public static void main(String[] args){
  T1 t = new T1();
  t.n();
 } 
}
class T{
  static int m = 10;
}//经过改正,super可以调用父类的静态变量了,但必须是通过实例调用。

总结:super和this必须在指向对象实例确定的情况下,才能使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值