javathis調用方法
⑴ java中this的使用方法
指代自身
例如
class A{
public int x;
public void y() {...}
}
這里this.x就指代A.x
this.y()就指代調用自身方法等於A.y
⑵ java中this的用法
1. this指當前對象。
當在一個類中要明確指出使用對象變數或函數時加上this引用。如下面例子中:
public class Hello {
String s = "Hello";
public Hello(String s){
System.out.println("s = " + s);
System.out.println("1 -> this.s = " + this.s);
this.s = s;
System.out.println("2 -> this.s = " + this.s);
}
public static void main(String[] args) {
Hello x=new Hello("HelloWorld!");
}
}
運行結果:
s = HelloWorld!
1 -> this.s = Hello
2 -> this.s = HelloWorld!
在這個例子中,構造函數Hello中,參數s與類Hello的變數s同名,這時直接對s進行操作則是對參數s進行操作。對類Hello的成員變數s進行操作就應該用this進行引用。運行結果的第一行就是直接對構造函數中傳遞過來的參數s進行列印結果;
第二行是對成員變數s的列印;第三行是先對成員變數s賦傳過來的參數s值後再列印,所以結果是HelloWorld!
2. this作為參數傳遞
當你要把自己作為參數傳遞給別的對象時如:
public class A {
public A() {
new B(this).print();
}
public void print() {
System.out.println("Hello from A!");
}
}
public class B {
A a;
public B(A a) {
this.a = a;
}
public void print() {
a.print();
System.out.println("Hello from B!");
}
}
運行結果:
Hello from A!
Hello from B!
在這個例子中,對象A的構造函數中,new
B(this)把對象A作為參數傳遞給了對象B的構造函數。
⑶ java里的this 調用其他方法。
原因很簡單,必須確保對象已經正確地被構造,如果不強制
this()
在第一句,就有可能發生這樣的事情:
publicclassTestThis{
publicTestThis(inti){
}
publicTestThis(){
test();//這句話是不應該的,因為這個對象還沒有正確被初始化你就調用了
this(1);
}
publicinttest(){
return1;
}
}
其實如果在對象沒有正確初始化之前都是不能夠調用本對象的方法或屬性
publicclassTestThis{
intj;
publicTestThis(inti){
}
publicTestThis(){
this(j);//這是錯誤的,對象還沒有正確初始化
}
publicinttest(){
return1;
}
}
publicclassTestThis{
intj;
publicTestThis(inti){
}
publicTestThis(){
this(test());//這是錯誤的,對象還沒有正確初始化
}
publicinttest(){
return1;
}
}
其實這涉及到一個問題,如果this()可以放在構造函數的任意一句中,那麼編譯器就很難辨別你到底有沒有調用正在初始化的對象中的方法或屬性
但是在網上看到C#的構造函數中是可以這樣做的,所以這個實現起來應該也不是很困難,不過java是這樣規定的,我個人也相信這個絕對不是什麼技術上的難題,不過是java虛擬機的標准罷了,沒有什麼具體理由可以講,但是必須記住,在構造函數中調用this()或者super()之前都不應該使用該類或者是父類的任何屬性和方法
⑷ java中一般方法里的this是代表調用本方法的對象,但是構造方法里的this代表的是什麼呢。
this代表你正在構造的對象。
publicclassTest{
publicTest(){
System.out.println(this.toString());
}
publicstaticvoidmain(String[]args){
Testobj=newTest();
System.out.println(obj.toString());
}
}
輸出的兩個字元串相同(後面的數字是對象地址),說明this和obj是同一個對象。
這里this就是正在構建的CommunicationDemo的對象,作為參數傳給Thread的構造函數。
內幕是:java對象的建立其實是在構造函數開始執行之前,就是說構造函數執行的時候,被構造的對象其實已經存在了,所以構造函數中可以用this引用當前被構造的對象進行處理(比如 this.name=「Jack」)。
⑸ 通過java中的類,對象和this分別調用方法有什麼不同
簡單點說,this是對當前對象的引用
用對象你可以創建其他類的對象
可以詳細看一下this的用法
⑹ java關於this調用本類的方法
s是對Student對象實例的引用,運行代碼s.fun();因為Student類中沒有fun()這個方法。於是,程序去他的父類尋找。找到後,首先輸出「什麼玩意」,然後運行this.print();注意java中的關鍵字this在編譯的時候就確定了,它就代表定義時候的對象。(這點和javascript有很大不同)。因此,此時的this代表Person,接著運行Person中的print()方法,輸出結果就是「這是父類的方法」。但是,為什麼去掉private關鍵字結果又不一樣了呢?因為被private修飾的方法和屬性是不會被子類繼承的,如果是默認的許可權,子類也可以繼承到。於是,在父類運行this.print()時(即沒有關鍵字private修飾),它會去子類查找該方法是否被重寫,如果是,則調用子類方法;否則,執行父類的方法。
⑺ java關於this的調用
指的是Course類中的getCourse()方法
this指的是本類中的變數或方法。
⑻ java中this可以調用方法嗎不是不是構造函數。
this是當前對象的引用,那麼當前對象可以調用的方法用this也都可以調用的
⑼ java中,調用這個實例方法時用this.方法名,引用名.方法名都是合理的嗎
this是當前對象,引用不一定是當前對象
⑽ 在java中怎樣用this調用構造方法
在這個構造方法中,用this(參數列表)來調用對應參數列表的構造方法,不過要注意:這個要寫在第一行,並且只能有一個this.