構造函數如何使用?
構造函數怎麼用
默認構造函數是說沒有參數或者所有參數都有默認值的構造函數。
默認構造函數只有在沒有任何構造函數的情況下編譯器才默認給出的。
——這是對的。但你對 默認構造函數 功能的理解不準確。
系統提供的默認構造函數 只負責創建對象(即分配數據成員所需的存儲空間),並不對所創建的對象的數據成員進行任何初始化工作。
用戶提供的默認(包括沒有參數的 或 者所有參數都有默認值的)構造函數,創建對象後由函數的代碼負責數據成員的初始化工作。
java的構造方法使用
一個是你的有一個print拼寫錯誤
還有就是Epreson裡面的內容放在main函數中,才可以
給你修改了一下,你對比一下
class Person {private String name; // 私有屬性nameprivate int age; // 私有屬性agepublic void tall() { // 公有方法輸出”我是誰叫什麼“System.out.println("我是" + name + "今年" + age);}public void person() { // 構造方法,把對象的值賦值給屬性name = "張三";age = 20;}public void setName(String n) { // 設置屬性name的接口name = n;}public String getName() { // 讀取屬性name的接口return name;}public void setAge(int a) { // 設置屬性age的接口if (a > 0 && a < 100)age = a;}public int getAge() { // 讀取屬性age的接口return age;}}// ====================================================public class Epreson {public static void main(String[] args) {Person per = new Person(); // 創建並實例化對象per.tall(); // 輸出驗證構造方法是否改變了類屬性的賦值// System.out.println("===============================來一行分隔符===========================");per.setName("李四"); // 更改類屬性nameper.setAge(99); // 更改類屬性ageper.tall(); // 輸出驗證類屬性是否被更改}}
為什麼要用構造函數
構造函數是類的一個特殊方法,這個方法用來生成實例時由系統自動調用,程序員無法直接調用。構造函數方法名同類名相同且參數為空。子類繼承父類後默認繼承父類的構造函數,即:子類存在隱含方法:super(),如果子類重寫構造函數則子類也隱含調用super()。
如下例:
例一:
package sample;
public class A{
A(){
System.out.println("主類構造函數調用");
}
public static void main(String args[]){
A g=new A();
subA s=new subA();
}
}
class subA extends A{
}
執行結果為:
主類構造函數調用
主類構造函數調用
本例中子類subA中沒有任何方法,所以隱含調用super(),super()指向A()。
例二:
package sample;
public class A{
A(){
System.out.println("主類構造函數調用");
}
public static void main(String args[]){
A g=new A();
subA s=new subA();
}
}
class subA extends A{
public subA(){
}
}
執行結果為:
主類構造函數調用
主類構造函數調用
本例中子類subA只有一個空方法suba()中沒有任何方法,所以也隱含調用super(),super()指向A()。
例三:
package sample;
public class A{
A(){
System.out.println("主類構造函數調用");
}
public static void main(String args[]){
A g=new A();
subA s=new subA();
}
}
class subA extends A{
public subA(){
System.out.println("子類構造函數調用");
}
}
執行結果為:
主類構造函數調用
主類構造函數調用
子類構造函數調用
本例中子類subA的方法subA()雖然後輸出但同上例中相同都為構造函數,所以也隱含調用super(),super()指向A()。
c++什麼叫構造函數,它的作用是什麼
構造函數的名字和類的名字一樣,並且沒有返回值類型。通常用於初始化私有的數據成員。
c++在主函數裡,怎麼調用構造函數和成員函數
如果你要構造一個自定義類的對象時,可以使用“類型構造操作符”。這將導致編譯器為你調用構造函數。
比如你寫了一個類,叫BaseItem.顯然你可以這樣定義一個BaseItem對象:
BaseItem aItem; // 調用默認構造函數;
你還可以這樣定義一個BaseItem對象:
BaseItem aItem = BaseItem(); // 調用默認構造函數。這裡"()"表示“類型構造操作符”,
// 用來實例化一個對象
假如你的構攻函數接受一個string對象作為參數,你還可以這樣定義BaseItem:
BaseItem aItem("This is a base item"); // 這會使編譯器為你調用相應的構造函數。
ok,上面的都明白了嘛?下面再開始講類的構造函數和成員函數有什麼區別。
(非靜態)成員函數是通過對象/指向對象的指針/指向對象的引用來調用的。你只能通過這3種方式來調用一個成員函數。那麼很顯然,實質上無論如何要調用成員函數都必須通過對象。
比如BaseItem裡面有一個成員函數叫memfunc,那麼你可以這樣調用它:
aItem.memfunc(...parameters...);
而構造函數卻是用來構造對象的。在對象還沒形成之前,你怎麼能夠通過對象去調用函數?所以...你無法通過對象去調用構造函數。
Java中的構造函數Constructor怎麼用
關於Java中的構造函數Constructor的內容,以下就是該內容的詳細介紹。
每創建一個類的實例都去初始化它的所有變量是乏味的。如果一個對象在被創建時就完成了所有的初始工作,將是簡單的和簡潔的。因此,Java在類裡提?copy;了一個特殊的成員函數,叫做構造函數(Constructor?copy;。一個構造函數是對象被創建時初始對象的成員函數。它具有和它所在的類完全一樣的名字。一?copy;定義好一個構造函數,創建對象時就會自動調用它。構造函數沒有返回類型,即使是void類型也沒有。這是因為一個類的構造函數的返回值的類型就是這個類本身。構造函數的任務是初始一個對象的內部狀態,所以用new操作符創建一個實例後,立刻就會得到一個清楚、可用的對象。下面這個例子裡,用構造函數取代了成員函數init。
classUniversity{Stringname,city;University(Stringname,Stringcity){this.name=name;this.city=city;}}
classUniversityCreate{publicstaticvoidmain(Stringargs[]){Universityu=newUniversity("北?copy;大學","北?copy;");System.out.println("大學:"+u.name+"城市:"+u.city);}}
new語句中類名後的參數是傳給構造函數的。
使用方法:
JavaScript Boolean.constructor()方法返回一個引用到創建實例的原型布爾函數。語法
?
boolean.constructor()
返回值:
NA
下面是參數的詳細信息:
返回創建此對象的實例。例子:
這將產生以下結果:
?
1
bool.constructor() is : function Boolean() { [native code] }
java中如何使用構造函數問題
new Person() 返回是單個對象。。。。。。。。。前面定義是數組。。。。
一般情況,對象的數組應用,不寫在對象定義構造中。。。。。寫方法就可以
。
我是新手請教帶參數的構造函數有什麼作用嗎
每次寫實體類的時候,都要寫一次無參數的構造函數,再寫一次有參數的構造函數
------解決方案--------------------------------------------------------
估計你沒用到hibernate 把,hibernate 的hql 語句有個功能,如下
String hql = select new Student(id,name,age,birth) from entity.Student ;
List Student list = query.executeQuery(hql).list();
用到Student(int id,String name,int age,Date birth)這個構造函數。。
而且有參數的構造函數,可以方便賦值,比如要創建一個Student,就不用通過setId setName
setAge 了,
直接Student s = new Student(1,'bill',20,'2000-2-2');就可以拉。。
------解決方案--------------------------------------------------------
定義類,該類的對象必定有相應的屬性。
定義好類之後,要想使用該類就應該創建該類的實例。
構造一個類的實例;應該做:
1、為對象分配內存空間;
2、初始化對象中的成員變量
3、通過調用類的構造方法來創建該對象
而帶參構造函數就可以做到初始化成員變量,這樣用很是方便。
構造方法的作用是什麼
作用就是對類進行初始化。
如果你沒有定議任何構造方法的形式,程式會為你取一個不帶任何參數的構造函數,那麼你產生類的對像時只能用不帶參數的方法,如:class a {}//沒有任何構造函數,
class b{ a c = new a();}//a()不能帶任何參數。
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++的T......