java类方法和变量之间的调用关系
java类中可以有2个元素:变量 和 方法
1.同一个类中的方法可以调用变量
1.构造方法中
1.可以使用当前中的实例变量,默认this.实例变量的名称,this可以省略
出现成员变量隐藏的情况时,强制调用被隐藏的实例变量值时,this不可以省略
2.可以使用当前类中的静态成员变量,默认类名.静态成员变量名称,也可以this.静态成员变量名称,类名和this可以省略
3.可以使用当前方法中的局部变量,直接使用局部变量名称调用
2.实例方法中
1.可以使用当前中的实例变量,默认this.实例变量的名称,this可以省略
出现成员变量隐藏的情况时,强制调用被隐藏的实例变量值时,this不可以省略
2.可以使用当前类中的静态成员变量,默认类名.静态成员变量名称,也可以this.静态成员变量名称,类名和this可以省略
3.可以使用当前方法中的局部变量,直接使用局部变量名称调用
3.静态方法中
1.不能使用this
2.不能使用当前中的实例变量
3.可以使用当前类中的静态成员变量,默认类名.静态成员变量名称,类名可以省略
4.可以使用当前方法中的局部变量,直接使用局部变量名称调用
package com.wangxing.test1;
public class MyClass {
//定义实例变量
public String shilibianliang="实例变量";
//定义静态成员变量
public static String staticbianliang="静态成员变量";
//构造方法--创建类的对象
public MyClass(){
System.out.println("无参数的构造方法");
//定义局部变量
String gouzaojububianliang="构造方法的局部变量";
//构造方法中访问当前类中的实例变量,默认this.实例变量的名称,this可以省略
//出现成员变量隐藏的情况时,强制调用被隐藏的实例变量值时,this不可以省略
System.out.println("构造方法中访问当前类中的实例变量=="+this.shilibianliang);
System.out.println("构造方法中访问当前类中的实例变量=="+shilibianliang);
//构造方法中访问当前类中的静态成员变量,默认类名.静态成员变量名称,
//也可以this.静态成员变量名称,类名和this可以省略
System.out.println("构造方法中访问当前类中的静态成员变量=="+MyClass.staticbianliang);
System.out.println("构造方法中访问当前类中的静态成员变量=="+this.staticbianliang);
System.out.println("构造方法中访问当前类中的静态成员变量=="+staticbianliang);
//构造方法中访问当前方法中的局部变量,直接使用局部变量
System.out.println("构造方法中访问当前方法中的局部变量=="+gouzaojububianliang);
}
//实例方法
public void shiLiMethod1(){
System.out.println("MyClass类中的实例方法shiLiMethod1");
//定义局部变量
String shilijububianliang="实例方法的局部变量";
//实例方法中访问当前类中的实例变量,默认this.实例变量的名称,this可以省略
//出现成员变量隐藏的情况时,强制调用被隐藏的实例变量值时,this不可以省略
System.out.println("实例方法中访问当前类中的实例变量=="+this.shilibianliang);
System.out.println("实例方法中访问当前类中的实例变量=="+shilibianliang);
//实例方法中访问当前类中的静态成员变量,默认类名.静态成员变量名称,
//也可以this.静态成员变量名称,类名和this可以省略
System.out.println("实例方法中访问当前类中的静态成员变量=="+MyClass.staticbianliang);
System.out.println("实例方法中访问当前类中的静态成员变量=="+this.staticbianliang);
System.out.println("实例方法中访问当前类中的静态成员变量=="+staticbianliang);
//实例方法中访问当前方法中的局部变量,直接使用局部变量名称
System.out.println("实例方法中访问当前方法中的局部变量=="+shilijububianliang);
}
//静态方法
public static void staticMethod1(){
System.out.println("MyClass类中的静态方法staticMethod1");
//定义局部变量
String staticjububianliang="静态方法的局部变量";
//静态方法中不能使用this
//静态方法中不能使用实例变量
//静态方法中访问当前类中的静态成员变量,默认类名.静态成员变量名称,类名可以省略
System.out.println("静态方法中访问当前类中的静态成员变量=="+MyClass.staticbianliang);
System.out.println("静态方法中访问当前类中的静态成员变量=="+staticbianliang);
//静态方法中访问当前方法中的局部变量,直接使用局部变量名称
System.out.println("静态方法中访问当前方法中的局部变量=="+staticjububianliang);
}
}
测试代码
package com.wangxing.test1;
public class TestMain {
public static void main(String[] args) {
//创建MyClass类的对象
MyClass mc=new MyClass();
//调用MyClass类中的实例方法
mc.shiLiMethod1();
//类名调用静态方法
MyClass.staticMethod1();
//对象调用静态方法
mc.staticMethod1();
}
}
2.同一个类中的方法可以调用方法
1.构造方法中
1.可以访问其他的构造方法,通过new关键字来使用
2.可以访问当前类中实例方法,默认this.实例方法,this可以省略
3.可以访问当前类中静态方法,默认类名.静态方法,也可以this.静态方法,类名和this都可以省略
2.实例方法
1.可以访问构造方法,通过new关键字来使用
2.可以访问当前类中其他实例方法,默认this.实例方法,this可以省略
3.可以访问当前类中静态方法,默认类名.静态方法,也可以this.静态方法,类名和this都可以省略
3.静态方法
1.静态方法中不能使用this.
2.静态方法中不能使用实例方法
3.可以访问构造方法,通过new关键字来使用
4.可以访问当前类中其他静态方法,默认类名.静态方法,类名可以省略
package com.wangxing.test1;
public class MyClass {
//构造方法
public MyClass(){
System.out.println("无参数的构造方法");
//可以访问其他的构造方法,通过new关键字来使用
new MyClass("zhangsan");
//可以访问当前类中实例方法,默认this.实例方法,this可以省略
this.shiliMethod2("lisi");
shiliMethod2("lisi");
//可以访问当前类中静态方法,默认类名.静态方法,也可以this.静态方法,
//类名和this都可以省略
MyClass.staticMethod2("wangwu");
this.staticMethod2("wangwu");
staticMethod2("wangwu");
}
public MyClass(String name){
System.out.println("有参数的构造方法,参数name="+name);
}
//实例方法
public void shiliMethod1(){
System.out.println("无参数的实例方法shiliMethod1");
//可以访问构造方法,通过new关键字来使用
new MyClass("zhangsan");
//可以访问当前类中其他实例方法,默认this.实例方法,this可以省略
this.shiliMethod2("lisi");
shiliMethod2("lisi");
//可以访问当前类中静态方法,默认类名.静态方法,也可以this.静态方法,
//类名和this都可以省略
MyClass.staticMethod2("wangwu");
this.staticMethod2("wangwu");
staticMethod2("wangwu");
}
public void shiliMethod2(String shiliname){
System.out.println("有参数的实例方法shiliMethod2,参数shiliname="+shiliname);
}
//静态方法
public static void staticMethod1(){
System.out.println("无参数的静态方法staticMethod1");
//静态方法中不能使用this.
//可以访问构造方法,通过new关键字来使用
new MyClass("zhangsan");
//静态方法中不能使用实例方法
//可以访问当前类中其他静态方法,默认类名.静态方法,类名可以省略
MyClass.staticMethod2("wangwu");
staticMethod2("wangwu");
}
public static void staticMethod2(String staticname){
System.out.println("有参数的静态方法staticMethod2,参数staticname="+staticname);
}
}
测试代码
package com.wangxing.test1;
public class TestMain {
public static void main(String[] args) {
//创建MyClass类的对象
MyClass mc=new MyClass();
//对象调用实例方法
mc.shiliMethod1();
//类名调用静态方法
MyClass.staticMethod1();
//对象调用静态方法
mc.staticMethod1();
}
}
总结:
1.构造方法或者实例方法中可以使用当前类中的实例变量和实例方法,默认this.实例变量/实例
方法,this可以省略
2.构造方法或者实例方法或者静态方法中可以使用当前类中的静态变量和静态方法,默认类名.静态变量/静态方法,也可以this.静态变量/静态方法【静态方法除外】,类名和this可以省略
3.构造方法或者实例方法或者静态方法中可以使用当前类中构造方法,使用new关键字
4.构造方法或者实例方法或者静态方法中可以使用当前方法中的局部变量,直接变量名称
5.静态方法中不能访问实例变量和实例方法
6.静态方法中不能使用this.