本文共 2334 字,大约阅读时间需要 7 分钟。
static~ : 直接用类调用 (也可以用对象调用,会自动转换为类名调用)
非static(实例)~ : 要用对象调用 【this和super用法一样!!!!】 this表示:当前对象的 super表示:父类的static:静态的,可以看作是共享的变量或者方法,存储在方法区内存中。
1. static修饰:无需对象参与便有的定方法或者定变量
那么: (1)直接:" 类名. " 去访问 (可以用对象调用,不会报错,它会自动转换为类名调用) (2)static与this不能共存 (3)static方法中也不能直接有实例变量(对象都不滴有 你哪来的实例变量) 当然可以在static方法里面可以创建对象 然后去访问实例变量(这跟上述不冲突)2. 无static修饰:必须要有对象参与才有确切值的方法或者变量
必须要用对象调用!类在方法区内存加载顺序:类加载只加载一次!
注:程序输出的“main方法”是主方法在栈内存中执行输出的!
这两种语句块永远是父类先执行!
this表示当前对象:
public class Test01 { int i = 100;//实例变量 static int j = 250;//静态变量 public static void main(String[] args) { //完整方式 Test01.methon(); //省略方式 methon(); Test01 t1 = new Test01(); t1.methon2(); System.out.println(t1.i); System.out.println(j);//省略Test01. } public static void methon() { System.out.println("methon"); //完整方式 Test01.doSame(); //省略方式 doSame(); Test01 t2 = new Test01(); t2.doSame1(); System.out.println(t2.i); System.out.println(j);//省略Test01. } public void methon2() { System.out.println("methon2"); //完整方式 Test01.doSame(); //省略方式 doSame(); //完整方式 this.doSame1(); //省略方式 doSame1(); System.out.println(i);//省略this. System.out.println(j);//省略Test01. } public static void doSame() { System.out.println("doSome"); } public void doSame1() { System.out.println("doSame1"); }}
this、super用法一样 只是:super通过当前构造方法调用父类中的构造方法【注意:没extends继承,则调用的就是Object类的构造方法】(只记三)
只是:this、super在子类构造方法中:
那么,无论怎样,父类中的构造方法一定会先实现!
注意:
构造方法执行过程中一连串调用父类构造方法,但只创建了一个对象; super()调用父类构造方法实质是 初始化父类实例变量(父类特征),并不创建对象。这些初始化变量就包含在子类对象中,为子类对象所用。子类可以通过继承的get(),set()方法去操控没有继承的private变量:
当子类与父类存在同名变量,想要访问父类中的这个变量,就必须用super.
原因:同样是就近原则(this.不能省也是),name==this.name就近访问子类中的同名变量。用super.就可以访问父类中的这个同名变量。
转载地址:http://aqsv.baihongyu.com/