㈠ java什麼時候要設置有參構造
如果是final變數,就不行,比如:
class Test {
private final int i;
public Test(int i) {
this.i = i;
}
public void setI(int i) {
this.i = i;//錯誤,無法通過編譯
}
}
㈡ JAVA一個類寫了有參的構造方法,還會默認有一個無參的構造方法嗎
不會,如果類中你已經寫了有參構造方法,那麼之前的默認無參構造方法就需要自己手動寫上去。
㈢ java 有參構造函數
第一種是set方法賦值。
第二種是有參構造方法賦值。
他們的區別是:當對象被new的時候,
第一種首先進入的是set方法裡面在從set方法裡面進行賦值。
第二種是直接給參數賦值。
㈣ java 中有參構造與無參構造區別
無參構造器和有參構造器都是一樣的,只不過一個有參數一個沒有而已。一般創建類的時候,如果你不寫構造器,那麼這個類有一個默認的無參構造器。如果你寫了一個有參的構造器,那麼那個無參的構造器就被覆蓋了!不過經常我都會多寫一個無參的構造器,這樣new對象的時候比較方便
㈤ java有參構造的,參數代表什麼意思
和你寫帶參數的方法是一樣的,參數就是你要傳入的變數。類當然也可以傳了,類不也是一種變數類型嗎
㈥ Java 帶參數構造函數
因為在一個類中,默人有一個沒有帶參數的構造函數;
在上面的這個類中,有自定義了一個帶參數的構造函數。
當你在測試類中寫的時候,實際上也有兩個構造屬性的方法。一個沒有參數,一個有參數,所以必須程序員自己指定。故沒有提示。
只能程序員自己添加。
㈦ java 構造方法可以有參數嗎
構造方法,是你在構造一個對象時調用的方法,使用一個無參的構造方法就好比你創造了一個空的殼,具體的數據要等到你使用的時候再把值放到你創造出來的殼裡面,而你也可以選擇調用一個有參的構造函數,在創建的時候就把部分的值給他加上去。重載是指方法名字一樣,而方法裡面的參數的類型或數量不同。要注意的是單單返回值不同不能算是重載的。
㈧ Java中如何在無參構造方法中調用有參構造
一般正常的都是參數多的調用參數少的。有參數的調用無參數的居多。
當然你要無參調用的參的也可以。
你用無參,調用有參的。那你有參的參數你需要怎麼傳呢。當然如果換一個角度也可以。
我手寫下。沒經過IDE的。提供下思路。我有兩種思路,寫同一個功能。
public class Person{
private String name;
private int age;
//無參
public Person(){
this.name="張三";
this.age=20;
}
//有參
public Person(String name){
this.name=name;
}
//多參
public Person(String name,int age){
this(name);//調用一個參數的構造方法
this.age=age;
}
}
這是一種寫法比較常用的方法。寫第一種。用上面的例子直接寫
public Person(){
this("張三",20);//調用有參構造方法。設置默認值。和第一種方法功能一樣
}
public Person(String name,int age){
this.name=name;
this.age=age;
}
為了程序易讀性。一般。參數的擴展和構造方法的調用都是有一定的規律的。
有參調無參,多參調少參。。擴展參數的時候,最好保持原來的順序。
㈨ Java編程題: 編寫一個Student類,包含name和age屬性,提供有參構造方法
//*********************Student
import java.util.Objects;
public class Student {
public String name;
public int age;
Student(){}
Student(String name,int age){
this.name=name;
this.age=age;
}
public String toString(){//重寫toString()
return "name: "+name+" age: "+age;
}
public boolean equals(Object o) {//重寫equals()
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return age == student.age && Objects.equals(name, student.name);
}
public int hashCode() {//重寫hashCode()
return Objects.hash(name)+age;
}
}
//********************StudentTest
import java.util.HashSet;
public class StudentTest {
public static void main(String[] args) {
HashSet<Student> hs=new HashSet<>();
Student s1=new Student("zs",19);//s1
Student s2=new Student("zs",19);//s2
Student s3=new Student("ls",19);//s3
hs.add(s1);//加入集合
hs.add(s2);//
hs.add(s3);//
//s1,s2,equals()返回true,s2不會加入集合
for(Student it:hs) {//遍歷HasSet
System.out.println(it);
}
}
}