java調用構造函數
1. java中構造函數之間的調用是什麼意思
來自新浪微博,給你詳細的說明一下this
的用法。
Java關鍵字this只能用於方法方法體內。當一個對象創建後,Java虛擬機(JVM)就會給這個對象分配一個引用自身的指針,這個指針的名字就是 this。因此,this只能在類中的非靜態方法中使用,靜態方法和靜態的代碼塊中絕對不能出現this,這在「Java關鍵字static、final 使用總結」一文中給出了明確解釋。並且this只和特定的對象關聯,而不和類關聯,同一個類的不同對象有不同的this。
package test;
public class ThisTest {
private int i=0;
//第一個構造器:有一個int型形參
ThisTest(int i){
this.i=i+1;//此時this表示引用成員變數i,而非函數參數i
System.out.println("Int constructor i——this.i: "+i+"——"+this.i);
System.out.println("i-1:"+(i-1)+"this.i+1:"+(this.i+1));
//從兩個輸出結果充分證明了i和this.i是不一樣的!
}
// 第二個構造器:有一個String型形參
ThisTest(String s){
System.out.println("String constructor: "+s);
}
// 第三個構造器:有一個int型形參和一個String型形參
ThisTest(int i,String s){
this(s);//this調用第二個構造器
//this(i);
this.i=i++;//this以引用該類的成員變數
System.out.println("Int constructor: "+i+"/n"+"String constructor: "+s);
}
public ThisTest increment(){
this.i++;
return this;//返回的是當前的對象,該對象屬於(ThisTest)
}
public static void main(String[] args){
ThisTest tt0=new ThisTest(10);
ThisTest tt1=new ThisTest("ok");
ThisTest tt2=new ThisTest(20,"ok again!");
System.out.println(tt0.increment().increment().increment().i);
//tt0.increment()返回一個在tt0基礎上i++的ThisTest對象,
//接著又返回在上面返回的對象基礎上i++的ThisTest對象!
}
}
運行結果:
Int constructor i——this.i: 10——11
String constructor: ok
String constructor: ok again!
Int constructor: 21
String constructor: ok again!
14
細節問題注釋已經寫的比較清楚了,這里不在贅述,只是總結一下,其實this主要要三種用法:
1、表示對當前對象的引用!
2、表示用類的成員變數,而非函數參數,注意在函數參數和成員變數同名是進行區分!其實這是第一種用法的特例,比較常用,所以那出來強調一下。
3、用於在構造方法中引用滿足指定參數類型的構造器(其實也就是構造方法)。但是這里必須非常注意:只能引用一個構造方法且必須位於開始!
還有就是注意:this不能用在static方法中!所以甚至有人給static方法的定義就是:沒有this的方法!雖然誇張,但是卻充分說明this不能在static方法中使用!
說明在什麼情況下需要用到this:
第一、通過this調用另一個構造方法,用發是this(參數列表),這個僅僅在類的構造方法中,別的地方不能這么用。
第二、函數參數或者函數中的局部變數和成員變數同名的情況下,成員變數被屏蔽,此時要訪問成員變數則需要用「this.成員變數名」的方式來引用成員變數。當然,在沒有同名的情況下,可以直接用成員變數的名字,而不用this,用了也不為錯,呵呵。
第三、在函數中,需要引用該函所屬類的當前對象時候,直接用this。
其實這些用法總結都是從對「this是指向對象本身的一個指針」這句話的更深入的理解而來的,死記不然容易忘記而且容易搞錯,要理解!
2. 在Java中如何在主函數中調用一個類的構造函數
如果有一個類的名字叫Name:則
Name o = new Name();//調用空參的構造函數
Name o = new Name("aa");//調用需要傳回一個字元參數的構造函數,當然得在Name類中定義這樣一個構造函數。
構造函數:構造函數(constructor)是一種特殊的方法 。主要用來在創建對象時初始化對象, 即為對象成員變數賦初始值,總與new運算符一起使用在創建對象的語句中 。特別的一個類可以有多個構造函數 ,可根據其參數個數的不同或參數類型的不同來區分它們 即構造函數的重載。構造函數的功能主要用於在類的對象創建時定義初始化的狀態。
3. JAVA中使用什麼關鍵字可以調用構造函數 THIS
1.java裡面沒有函數的概念, 習慣叫方法
2.如果你調用本類的構造方版法
a) 直接調權用
b) this調用
3.如果你調用父類的構造方法
a),如果本類未override父類的構造方法
可以直接調用
b),如果本類override父類的構造方法
用super調用.
4. java構造函數中調用構造函數的問題
使用this的話創建了1個對象,構造方法返回的對象
使用new的話創建了2個對象,多了一個匿名的對象
使用new的時候 傳遞過來的3個參數給了匿名對象,而不是真正得到的對象
5. java中同一個包內一個類調用另一個類中構造函數的問題
你需要用javac的帶包編譯
javac -d . DBConnect.java
javac -d . UserUtil.java
你會發現在目錄中多了個bean文件夾,裡面有編譯好的兩個類
d後面的 點 是指生成包的文件目錄(. 代表當前目錄)
6. Java程序 構造函數並調用方法
學生吧!
呵呵 記得好好努力!
7. 在JAVA中構造函數的用途和調用時機是什麼
說到構造函數,首先你要清楚函數有無參構造函數和有參的構造函數
函數用途1:
比如說一回個Class類中有很答多屬性,你在測試類中要用到時,如果你只有一個無參的構造函數,那麼你使用這個類的並且輸出類的屬性值的時候,你就需要new 一個對象 然後用對象.屬性 給他賦值,但是如果你有一個帶參數的構造函數 那麼你在調用他的時候就只需要new一下的同時就給它賦值,
Class class=new Class(「屬性值1」,「屬性值2」);這樣就可以了!方便了很多,這樣就是初始化!
8. java怎麼調用帶參數構造函數
1
如果在子類中調用
,那麼先new
一個參數所在類型的對象a,即
A
a
=
new
A(),然後在子類中用super(a)就可以調版用父類的帶權類參數構造方法。
2
如果在其他類中調用,那麼也需要先new
一個參數所在類型的對象a,即
A
a=new
A();,然後new調用類的的時候把參數傳進去就可以了,B
b
=
new
B(a)。
9. java中,構造函數里能調用成員方法嗎
可以。
java中所有的方法都可以稱之為成員方法,成員方法分為構造方法和一般的方法。在構造方法里可以調用除自身外的其他方法(注意靜態方法與非靜態方法的調用),但要注意防止進入死循環,即互相調用。
10. java在一個類中如何同時調用另一個類中有參的構造函數和成員函數
我覺得是不可以的。
構造函數的調用--創建對象的時候,
成員函數的調用-通過對象來調用。
時機是有先後的,我覺得不可以。
愚見,