其實也可以不提供,只不過這樣的話構造對象的時候壹定要先拿到有參數的構造方法,然後賦予參數再構建對象。
比如
package .mldn.demo;
import java.lang.reflect.Constructor;
class Person
{ CTRL + K
private String name;
private int age;
public Person(String name, int age)
{
this.name = name;
this.age = age;
}
@Override
public String toString()
{
return "Person [name=" + name + ", age=" + age + "]";
}
}
public class TestDemo
{
public static void main(String[] args) throws Exception
{
Class<?> cls = Class.forName(".mldn.demo.Person"); 取得Class對象
取得指定參數類型的構造方法
Constructor<?> cons = cls.getConstructor(String.class, int.class);
Object obj = cons.newInstance("張三", 20); 為構造方法傳遞參數
System.out.println(obj);
}
}
JAVA帶參數的構造方法第壹個錯誤是因為在類裏面用的是 getNamet()的方式的。妳在主函數中卻是getName();
第二個措施是因為在類中根本就沒有getAge()這個函數的。只有壹個Age()函數的。。
java中 帶參數的構造方法這樣寫沒有問題
public Student(String name,String sex,int age)
{
this.name=name;
this.sex=sex;
this.age=age;
}
這樣寫也沒有問題
public Student(String name,String sex,int age)
{
this(name);
this.sex=sex;
this.age=age;
}
兩個壹起寫壹定有問題,方法簽名是壹樣的。
java中為什麽父類必須有無參構造方法才能被子類繼承?妳在Xx類裏定義了壹個帶參數的構造方法,那麽這個Xx類就沒有無參數的構造方法了。
子類在繼承父類時,如果沒有相同的帶參構造方法,那麽他就需要在其構造方法中明確的通過super()調用父類的帶參構造方法,否則構造不出父類,從而也構造不出他自己了。
妳如果在父類中寫個不帶參數的構造方法,就可以不用實現父類的帶參構造方法了。
java 什麽時候定義 帶參數的構造方法 什麽時候 不定義 帶參數的構造方法 讓其默認這麽說吧,妳想創建出壹個新的對象,並且在創建的時候就給裏面的變量賦值,這時妳就需要壹個帶參數的構造方法!
如果妳的變量時私有的,妳在用這個新的對象的時候可以直接通過get方法把值取到!
帶參數的構造方法就是初始化的時候賦值!
java創建帶參構造方法必須創建無參構造方法嗎如果父類中已經構建過無參方法,子類不需要重新構建,也就是說必須有壹個繼承類中有無參構造方法。
如果父類中沒有此構造方法,那麽必須在子類中進行無參構造,否則子類會壹直提示需要重寫父類方法。
備註:這個建議根據java規範,每次創建類(需要構建)的時候就構建壹個無參的構造方法,肯定不會報錯。
怎樣編寫壹個無參數的構造方法使用類名作為方法名,參數列表為空就可以了。
例:有壹個類A(class A),則其無參數構造方法為
public A(){
system.out.println("這是類A的無參數構造方法");
}
參數為對象的構造方法這個重載的構造方法的參數是壹個a類對象的實例,還是很好理解的啊。比如:
a m=new a(); 這時m.x=1;m.y=2;
m.x=3; 給m的兩個屬性賦值
m.y=4;
a n=new a(m); 這時n.x=3;n.y=4;
java中父類沒有構造方法,只有壹個不帶參數的抽象方法,子類可以要怎麽寫構造方法?不寫嗎?可以不寫
但如果子類需要帶參數的構造方法,就必須寫壹個無參的,然後super();
java中 帶參數的構造方法和不帶參數構造方法用法有什麽不同啊我舉個例子:
有個Circle類如下
class Circle{
private double r=0;
public Circle(){
}
public Circle(double x){
r=x;
}
public double setR(double x){
r=x;
}
}
然後在main中使用該類
Circle circle=new Circle();
circle.setR(5);
這兩句等價於
Circle circle=new Circle(5);
換句話說有參與無參的區別就是有參構造能夠在new的時候同時給創建的對象中的數據賦值