古詩詞大全網 - 成語查詢 - 為什麽Java反射對象必須有壹個無參數的構造方法?

為什麽Java反射對象必須有壹個無參數的構造方法?

為什麽Java反射對象必須有壹個無參數的構造方法?

其實也可以不提供,只不過這樣的話構造對象的時候壹定要先拿到有參數的構造方法,然後賦予參數再構建對象。

比如

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的時候同時給創建的對象中的數據賦值