導航:首頁 > 編程語言 > java反射調用父類方法

java反射調用父類方法

發布時間:2022-05-01 07:40:05

java中重寫父類方法後,這個方法如何調用父類私有屬性方法

父類的私有屬性和方法是不被子類繼承調用的,如果你非要這么做可以
1、在父類中另外定義protected 的方法操作私有方法,子類調用該方法
2、將私有方法改為protected
3、使用反射,獲取父類所有方法,根據名稱調用

❷ 關於java繼承中調用父類方法的問題

父類中,是static的,不使用super,而是 Quadrangle.draw

如果不是static的,子類中,沒有draw方法,可以省掉;子類中有draw方法,則必需super

❸ java關於子類實例化父類與反射的一個問題

Fruit fruit = new Apple();

首先這句話中,你通過new關鍵字實例化的是Apple的對象,由於Fruit是Apple的父類,因此Fruit類型的引用可以指向Apple類型的對象,並不意味著fruit變數是Fruit類型的對象。

因此,fruit.getClass().getName()的列印結果應該是Apple,我自己也是工作沒兩年,這塊我沒記錯應該是Java多態性的內容,再回頭看看吧。

❹ 求教Java裡面如何反射invoke父類的overriden方法

import java.lang.reflect.Method;

public class InvokeTest {

public static void main(String[] args) {
Class<?> clazz;
Object obj;
try {
InvokeTest it = new InvokeTest();
clazz = Class.forName("com.test.invoke.User");
obj = clazz.newInstance();

Param p = new Param();
p.setMethodName("introction");
p.setParamTypes(new Class<?>[]{String.class,int.class});
p.setParamValuese(new Object[]{"Tom",20});
Object result = it.call(obj, p);
System.out.println(result+"");

} catch (Exception e) {
e.printStackTrace();
}

}

/**
* 反射方法調用
* @param declareCLass classInstatnce
* @param param 參數設置類
* @return
* @throws Exception
*/
public Object call(Object declareCLass, Param param) throws Exception {
Class<?> clazz = declareCLass.getClass(); //獲取class對象
String name = param.getMethodName(); //從param類中獲取調用方法名
Class<?>[] methodParamTypes = param.getParamTypes(); //從param類中獲取調用方法參數類型
Object[] objs = param.getParamValuese(); //從param類中獲取調用方法參數值
Method method = clazz.getDeclaredMethod(name, methodParamTypes); //通過class對象獲取對應的方法
return method.invoke(declareCLass, objs); //invoke調用方法,傳入 classInstance、 參數值
}

}

/**
* 參數設置類
* @author Administrator
*
*/
class Param {
private String methodName;

private Class<?>[] paramTypes;

private Object[] paramValuese;

public String getMethodName() {
return methodName;
}

public void setMethodName(String methodName) {
this.methodName = methodName;
}

public Class<?>[] getParamTypes() {
return paramTypes;
}

public void setParamTypes(Class<?>[] paramTypes) {
this.paramTypes = paramTypes;
}

public Object[] getParamValuese() {
return paramValuese;
}

public void setParamValuese(Object[] paramValuese) {
this.paramValuese = paramValuese;
}
}

class User {

private String name;

private int age;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
System.out.println("called method setName value = " + name);
}

public int getAge() {
return age;
}

public void setAge(int age) {
System.out.println("called method setAge value = " + age);
this.age = age;
}

public String introction(String name,int age){
return "My name is "+name+". I'm "+age+" years old.";
}

}

❺ java 反射 訪問父類私有成員

可以看看這個 但是跟反射沒什麼關系。
利用多態,子類雖然訪問不了父類的私有變數,但是可以通過方法訪問,see

class a{
private int i = 11;
public void show(){
System.out.println(i);
}
}

class b extends a{
private int j= 12;
public static void main(String[] args){
a aa = new b();
aa.show();
}
}

❻ Java 里怎麼調用父類的父類的方法

如果該方法沒有被子類及其父類重寫的話,直接用子類對象就可以調用了,如:child.getName();
只要兩者有一個重寫了,就必須用super.super來調用:super.super.getName();

class A{
public void print(){
System.out.println("I am class A.");
}
public void print(String name){
System.out.println("Hello "+name+", I am class A.");
}}
class Aa extends A{
public void printInfo(){
super.print("SubClass");
}
}

❼ Java裡面,反射父類裡面數字類型欄位,怎麼set值

你在invoke反射方法時。這個你要調用父類的構造方法或者set方法來賦值。就可以的。

❽ java 怎麼在子類中調用父類方法

main方法中是可以的,父類是不能調用子類
的方法的。跟你說底層實現你也不懂,從面向對象上來說吧。
父類先於子類存在,子類從父類中生出來,所以子類知道父類,可以調用父類方法。但父類不知道子類,子類可以任意的出生,只要你願意,所以父類無法調用子類,他不知他會有這樣的子類,也不知有多少個子類,但子類的父類是唯一的。
簡單點就是在java中父類是不能調用子類的方法的。

❾ java中調用父類構造方法

非靜態的變數在別的類裡面是不能直接用的。。若要使用的話,就要通過實例化該父類,通過【實例名.屬性名】來訪問、、、你自己看一下把!! class
Point{
int
x,y;
static
int
c;
public
Point(int
m,int
n){
x=m;
y=n;
System.out.println("帶參數的父類給實例化了。x:"+x+"
y:"+y);
}
public
Point(){
c++;
System.out.println("第"+c+"次被創建子類對象");
}
}
public
class
Point3D
extends
Point{
public
static
void
main(String
[]
args){
Point
m1=new
Point3D();
Point
m2=new
Point3D();
Point
m3=new
Point3D();
System.out.println(Point.c);
Point
m4
=
new
Point(7
,
5);
System.out.println("父類x屬性的值為:"+m4.x);
System.out.println("父類y屬性的值為:"+m4.y);

}
}

閱讀全文

與java反射調用父類方法相關的資料

熱點內容
職業生涯pdf 瀏覽:954
ubuntu安裝軟體php 瀏覽:159
黑馬程序員退學流程 瀏覽:362
網頁伺服器崩潰怎麼回事 瀏覽:651
cnc編程前景怎麼樣 瀏覽:320
lniux命令詳解 瀏覽:493
linuxmysql查詢日誌 瀏覽:368
老捷達夥伴壓縮比 瀏覽:94
改後綴加密 瀏覽:433
郵局選址問題演算法 瀏覽:14
河北伺服器內存雲主機 瀏覽:13
在電腦上怎麼找到加密狗圖標 瀏覽:437
電腦的瀏覽器怎麼打開pdf文件怎麼打開 瀏覽:144
pdf卡片庫下載 瀏覽:13
單片機中二進製表示什麼 瀏覽:726
java網路編程推薦 瀏覽:797
施耐德開關編程 瀏覽:68
組織胚胎學pdf 瀏覽:845
linux查看發包 瀏覽:497
加密貨幣交易所暴利時代 瀏覽:826