程序:
class A
{
String name;
public A(String x)
{
name=x; //7
}
public void func1() //1
{
System.out.println("func1 of "+ name +"is calling");
}
public void func2()
{
A a2=new A("a2"); //2
this.func1(); //3
a2.func1; //4
}
}class TestA
{
public static void main(String[] args)
{
A a1=new A("a1"); //5
a1.func2(); //6
}
}编译TestA.java后,运行类TestA
结果是:
func1 of a1 is calling
func1 of a2 is calling问题1: 我把程序行编了号码,请问main执行时候的顺序是怎么样的,用号码表示就ok了
问题2: 每个成员方法内部,都有一个this引用变量,指向调用这个方法的对象。---怎样理解?用例子说明或者生活中通俗的语言
问题3: 程序如下
class Person
{
String name;
Public Person (String name)
{ this.name=name}
}
这里面的this是指代的什么?(结合问题2)
class A
{
String name;
public A(String x)
{
name=x; //7
}
public void func1() //1
{
System.out.println("func1 of "+ name +"is calling");
}
public void func2()
{
A a2=new A("a2"); //2
this.func1(); //3
a2.func1; //4
}
}class TestA
{
public static void main(String[] args)
{
A a1=new A("a1"); //5
a1.func2(); //6
}
}编译TestA.java后,运行类TestA
结果是:
func1 of a1 is calling
func1 of a2 is calling问题1: 我把程序行编了号码,请问main执行时候的顺序是怎么样的,用号码表示就ok了
问题2: 每个成员方法内部,都有一个this引用变量,指向调用这个方法的对象。---怎样理解?用例子说明或者生活中通俗的语言
问题3: 程序如下
class Person
{
String name;
Public Person (String name)
{ this.name=name}
}
这里面的this是指代的什么?(结合问题2)
調用搆造函數,執行第七條語句,創建實例a1,
接着執行func2()方法,執行第七條語句,創建第二個實例a2,
執行func1()方法,打印 func1 of a1 is calling 語句
最后執行a2.func1()方法,打印 func1 of a2 is calling 語句2.
this指本身,就是自己
this是谁调用此方法指谁
每次创建对象时都要去public A(String x)构造对象.
this指针被隐藏了、不用管他
执行到a1.func2(); 时将进入到func2()方法,在该方法内部工有三条语句
A a2=new A("a2"); //2创建一个A类实例a2,由构造方法可知 a2.name=a2
this.func1(); //3这里this指的就是上面的a1实例,解释以下,this.func1()这个语句是在
方法func2()中,而this指向的是(调用他所在方法)的对象,即调用
func2()方法的对象a1.
也就相当与执行a1.func1();那么为什么不使用a1.func1()而要使用
this.func1()呢,因为你在写方法func1() 的时候并不知道是由哪个
实例来调用他所以才产生了this
a2.func1;
我要回家了写的有点急,希望能看懂
未调用之前谁也不 知道this会是谁 当你new出那个对象时this就是指代那个对象!
{
String name;
public A(String x)
{
name=x; //7
}
public void func1() //1
{
System.out.println("func1 of "+ name +"is calling");
}
public void func2()
{
A a2=new A("a2"); //2
this.func1(); //3 这里指 a1
a2.func1; //4 这里指 a2
}
}class TestA
{
public static void main(String[] args)
{
A a1=new A("a1"); //5 对象a1
a1.func2(); //6 a1调用 func2()方法
}
}结果就是:
func1 of a1 is calling
func1 of a2 is calling
不知道说明白没
{
String name;
Public Person (String name)
{ this.name=name}
}把当作参数传进来的name传给这个类中定义的name,this.name就是本类的name。
然后执行5,创建一个a1指向A在堆中创建的对象.
然后执行7,因为创建对象时首先对成员变量初始化,然后在把显示的值放入堆中的对象.在来才是
调用构造函数.把参数赋值给成员变量name.
然后执行6,调用对象的方法.执行2,创建对象a2的引用.执行7执行3在执行1在执行4在执行1..
那句话意思就是如果有一个对象调用了这个方法.比如a1调用了这个方法fun2那么a1就是this所指向的那个对象的引用句柄.希望你能听明白.呵呵.
问题3和问题2就相同了.就是如果有一个对象调用了它那调用它的那个对象就是this.你那个还有没对象调用呢.
问题3,例子中this.name是指Person类中的name属性。
2、调用此方法的对象
3、类Person的实例 谁调用的就指的是谁,this.name就是指代他自己的name成员变量好比说 每个人都有一只左手和一只右手
一个小组8个人 参加了一个活动,主持人说大家做个动作——用右手(看作参数)拿起一个水果 可以看作是一个方法,右手是参数
但是每个人都有右手,this确保的是每个人用的右手是自己的
你做这个动作的时候(执行这个方法)就是用的自己的右手(自己的成员)突然发现这个帖子好久远。。