如何定義一個構造方法?
java類的構造方法是什麼?
與類名相同
可以有參數或者無參數
返回該類的對象
作用是用來構建和初始化該類的對象
調用無參構造器構建的對象只有該類的屬性
比如 構建一個“Person” 這個對象 只能說這個對象有 eyes mouth age 等屬性
調用有參構造器構建的對象可以在構建對象的時候對某些屬性賦予特定的值
比如 調用有參構造的對象 除了有以上屬性外 還可以知道age具體是多大、eyes是單眼皮等屬性的具體信息、、
非官方 不正式、僅供參考
java定義一個類是否必須寫構造方法,構造方法何時調用?
不一定寫構造方法,有需求的時候才寫
在被實例化的時候調用(再被new的時候調用)
構造方法一般在靜態塊、非靜態塊之後調用
java中一個類中必須含有一個構造方法嗎
不是的,你可以選擇不添加構造方法,因為java中默認的有一個構造方法,構造方法的使用與否全看你自己的操作需求,但是一旦你創建了構造方法,java虛擬機將不再採用默認的無參的構造方法,而使用你定義的構造方法
如何定義C++構造函數
C++構造函數是一種特殊的方法 主要用來在創建對象時初始化對象 即為對象成員變量賦初始值,無論是開發人員、項目經理、還是測試人員,掌握了C++構造函數會使我們的編程工作更簡單和更輕鬆。C++構造函數初始化列表以一個冒號開始,接著是以逗號分隔的數據成員列表,每個數據成員後面跟一個放在括號中的初始化式。例如:class CExample { public: int a; float b; //構造函數初始化列表 CExample(): a(0),b(8.8) {} //構造函數內部賦值 CExample() { a=0; b=8.8; } }; 上面的例子中兩個C++構造函數的結果是一樣的。上面的構造函數(使用初始化列表的構造函數)顯式的初始化類的成員;而沒使用初始化列表的構造函數是對類的成員賦值,並沒有進行顯式的初始化。初始化和賦值對內置類型的成員沒有什麼大的區別,像上面的任一個構造函數都可以。對非內置類型成員變量,為了避免兩次構造,推薦使用類構造函數初始化列表。但有的時候必須用帶有初始化列表的構造函數:1.成員類型是沒有默認構造函數的類。若沒有提供顯示初始化式,則編譯器隱式使用成員類型的默認構造函數,若類沒有默認構造函數,則編譯器嘗試使用默認構造函數將會失敗。2.const成員或引用類型的成員。因為const對象或引用類型只能初始化,不能對他們賦值。 初始化數據成員與對數據成員賦值的含義是什麼?有什麼區別?首先把數據成員按類型分類並分情況說明:1.內置數據類型,複合類型(指針,引用)在成員初始化列表和C++構造函數體內進行,在性能和結果上都是一樣的2.用戶定義類型(類類型)結果上相同,但是性能上存在很大的差別。因為類類型的數據成員對象在進入函數體前已經構造完成,也就是說在成員初始化列表處進行構造對象的工作。調用C++構造函數,在進入函數體之後。淺析C++中的C++構造函數探祕開源C++程序庫VC++開發環境的模式說明深度說明C++開源程序歷史如何正確學習C++應用程序進行的是對已經構造好的類對象的賦值,又調用個拷貝賦值操作符才能完成,如果並未提供,則使用編譯器提供的默認按成員賦值行為。你可能以為上面的代碼將會首先做m_y=I,然後做m_x=m_y,最後它們有相同的值。但是編譯器先初始化m_x,然後是m_y,,因為它們是按這樣的順序聲明的。結果是m_x將有一個不可預測的值。有兩種方法避免它,一個是總是按照你希望它們被初始化的順序聲明成員,第二個是,如果你決定使用初始化列表,總是按照它們聲明的順序羅列這些成員。這將有助於消除混淆。
Java中,在定義一個類的時候,定義一個空的構造方法和不定義構造方法有何不同?
沒有什麼不同
在Java中自定義一個類,要求兩個以上的構造方法,3個以上的成員方法,運用程序完成對3個成員方法的調用
package com;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Student {
private int age;
private String name;
//空參構造
public Student() {
super();
}
//一個參數
public Student(int age) {
super();
this.age = age;
}
//全參構造
public Student(int age, String name) {
super();
this.age = age;
this.name = name;
}
//無返回單參方法
public void outName(String name){
System.out.println(name);
}
//靜態方法
public static Date getDate(){
return new Date();
}
//靜態方法
public static String outDate(String pattern){
SimpleDateFormat format = new SimpleDateFormat(pattern);
return format.format(new Date());
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("Student [age=").append(age).append(", name=").append(name).append("]");
return builder.toString();
}
public static void main(String[] args) {
Student s1 = new Student();
System.out.println(s1);
Student s2 = new Student(8);
System.out.println(s2);
......
C# 怎麼定義一個構造函數?
public class Class1
{
public Class1(string p1)
{
}
public class1(string p1,string p2)
{
}
}
構造函數名必須和類名相同,C#默認是無參的構造函數
關於Java構造方法的一個問題
D不正確是因為構造函數不只是在對象NEW的時候被執行,你也可以在其它重載構造函數內執行,所以D不正確。
例如:
public class test {
public test() {
//這是一個空參構造方法
}
public test(String str) {
//這是一個有參構造方法,在這個方法內調用了上面的空參構造方法。
this();
}
}
但是最讓我疑惑的不是這個,而是B,
為什麼B是對的呢?很明顯這個是錯誤的答案,不知道是誰給你出的題,但你可以告訴他,這題他出錯了。。。
下面程序已經編譯通過,裡面的public void test()方法就是個普通方法,但可以和類重名不是:
public class test {
public test() {
//這是一個空參構造方法
System.out.println("空參構造方法");
}
public test(String str) {
//這是一個有參構造方法,在這個方法內調用了上面的空參構造方法。
this();
System.out.println("執行this()後,調用了有參構造方法。輸出參數:"+str);
}
public void test(){
System.out.println("普通方法");
}
public static void main(String[] args) {
test t=new test();
t.test();
test t1=new test("我");
}
}
程序輸出結果:
空參構造方法
普通方法
空參構造方法
執行this()後,調用了有參構造方法。輸出參數:我
一個類可以定義多個構造函數嗎,有什麼要求嗎
可以有多個構造函數,參數個數和參數類型不一樣就行
一個關於eclipse中如何快速創建構造方法
右鍵->source->生成構造方法,繼承父類
右鍵->source->使用成員變量生成構造方法