java中非常重要的修饰词---static、this、final、super

来源:互联网 发布:集体智慧编程 百度云 编辑:程序博客网 时间:2024/04/29 01:30

this

this总的来说表示指向当前对象的指针。

/** *  * @ClassName: Test    * @Description: this example * @author: Loser * @date:2016年9月12日 下午8:54:26 */public class Test {private int i=0;    //构造1Test(int i){       this.i=i+1; //此时this表示引用成员变量i,而非函数参数i       System.out.println("i-1:"+(i-1)+"this.i+1:"+(this.i+1));    }       //构造2Test(int i,int s){       this(s); //this调用第一个构造器,必须为于其第一行,构造方法也只能调       //用一个且仅一次构造器!       System.out.println("Int constructor:  "+i+"/n"+"String constructor:  "+s);    }    public Test increment(){       this.i++;       return this;//返回的是当前的对象    }    public static void main(String[] args){       Test t1=new Test(10);       Test t2=new Test(20,50);             System.out.println(t1.increment().i);    }}
就是说是哪个变量new了该对象就表示谁 

this 还可以用于构造函数的调用,例如:上述代码构造2中的this(s)

this不能和static同时使用,因为static修饰的方法和属性归类所有,而不是某个对象特有

super

super用于在子类中操作父类隐藏的属性和方法

super在子类的构造函数中调用父类的构造函数,注意:super调用构造函数必须位于子类构造函数的第一条语句,因为构造顺序为先构造父类的构造函数,再构造子类的构造函数,如果不位于第一条,那么就违背了这原则,会报错!

static

static不能和this同时使用,因为static是供类所有,是所有对象共享的,类似全局变量。首次加载类的时候就分配了内存,并且被static修饰的方法和变量JVM只加载一次。

被static修饰的变量称为类变量,被static修饰的方法称为类方法或者静态方法;没被修饰的称为实例变量,实例方法。

类方法只能访问类变量和类方法,实例方法都可以访问,关系如图所示:

关于static访问的误区:
public class TestStatic {private int i=0;       public void increment(){       System.out.println("i="+i++);    }    public static void main(String[] args){    int j=10;       Test t1=new Test(10);       Test t2=new Test(20,50);       j=t1.z;             System.out.println(j);    }}
对于被static修饰方法的访问是指方法本身外部的访问。在上段代码中,关于static方法的访问是指main之外的访问,比如说:main方法无法访问i,但是如果在main中实例化对象,通过对象去访问对象里面的变量是没问题的,还有在main方法里面可以声明实例变量,例如j。记住:我们所说static修饰方法的访问是它对于外部的访问。

final

final在Java中字面意思表示常量

对于final的理解:
被final修饰的方法不能够被重写
被final修饰的类不能被继承
被final修饰的变量开两种情况:1.如果是基本类型变量那么它的值是不能改变的,并且声明时最好初始化;如果是引用类型变量,那么他的指向不能变,即地址不能变,但是类里面的值是可以改动的

充分利用this和super可以减少重复代码
0 0
原创粉丝点击