
这个要分情况了,如果是该成员函数的形式参数名与成员变量名是一样的,那么调用成员量就要加上this,这里你要明白this的作用:表示当前调用该方法的对象。如果该成员函数的形式参数名与成员变量名是不一样,就不用加上this。 还有注意this的使用方法就是:不能再用statci修饰的函数里面使用。举个列子吧:
class Test
{
int x;
int y;
public Test(x,y){
thisx=x;//这里为什么用this,是因为构造函数的参数名和成员变量名一样
thisy=y;
}
public boolean a(){
if(x>y)//这里为什么没有用this,因为这里没有与成员变量名相同参数名
//当然这里也可以为if(thisx>thisy)
{
return true;
}
else
{
return false;
}
}
public int b(int x){
return x-thisx;//这里一定要写this,因为这里的参数名和成员变量名一样,为了区别
//必须加上this
}
作用范围不同,在里面的只在构造函数里面起作用,外面的话整个类都可以调用它,类成员还有不同的修饰符,被访问的范围也不同。觉得你说的还不是明白,具体点的话就更好说了。。。。
-------------------------------------------------------------------------------------------------------------------
在构造函数里声明的变量在同类中的其他方法是调用不到的,就像stop一样,不能再其他的方法中调用。static的声明作用是:在类加载前就已经加载,早于类的加载,可用类名直接调用,如MainFramegetComText(comp),没有static的声明的话,可先创建对象,再调用即可,如MainFrame f=new MainFrame();fgetComText(comp)。
class MyClass{
public MyClass(){//构造函数
}
private String name;//这是成员变量
public String getMyName(){//这是成员函数
private int age=0;//这是局部变量
return thisname
}
}
public class TestA{
//成员变量,可以用private public protected修饰,也可不写,默认protected,
//一般声明为private,私有化使变量不会轻易被外界使用,容易维护
private int i;
//成员变量可以直接赋值,不赋值的话基本类型默认为0,引用类型默认为null
private String str="abc";
//成员变量使用set和get方法来设值,对外提供使用变量方法
public int getI() {
return i;
}
public void setI(int i) {
thisi = i;
}
public String getStr() {
return str;
}
public void setStr(String str) {
thisstr = str;
}
//构造函数为本类提供实例化方法 不写编译器自动添加无参构造
//允许构造方法重载,即可以有多个不同的构造函数
//如果构造函数声明为private,则在别的类中不能new本类的实例
private TestA(){
}
//一般带参数的构造函数用来初始化成员变量
//如果写了带参数的构造函数,没写无参的,编译器不添加无参构造
//实例化时必须以带参构造函数进行实例化
public TestA(String str){
this(0,str);//本构造方法调用另一个参数为(int String)的构造方法,0可以为任意int值
}
public TestA(int i,String str){
thisi =i;
thisstr=str;
}
//成员方法也有修饰声明 为public为对外所有类提供此方法
//为protected只有子类继承使用
//为private只有在本类能使用
private void selfUse(){
Systemoutprintln(str);//成员方法可以直接使用成员变量
int j=10;//局部变量,别的方法使用不到,使用局部变量之前必须赋值,不会有默认值
setI(j);
}
public void publicUse(){
selfUse();
}
public TestA getTestA(){
return new TestA();
}
}
关系楼上说的也很明白了。
成员方法直接访问成员变量
成员变量可以通过构造函数初始化
构造函数可以直接调用成员方法
Java类的成员变量在被修饰为public、protected和包访问权限时,可以在不同层次上直接给成员变量赋值。但是,赋值的前提是:必须存在持有成员变量的对象。而对象的初始化必须调用构造函数,所以构造函数是必不可缺的。至于使用构造函数还是直接声明时给成员变量赋值,那就要看情况而定。如果创建的这个对象是不可变的,那么就必须使用构造函数初始化成员变量,反之,就无所谓。另外,直接给成员变量赋值,Java是不推荐的,因为这样会破坏它的封装性。所以,建议在构造函数或提供setters方法对变量赋值。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)