public class a
public void seta(string a)
public string getb()
public void setb(string b)
}public class b extends a
public void setc(string c)
public string getd()
public void setd(string d)
}/** 假如有a類和b類兩個實體類,b類是繼承於a類的,現在想要將a類中的 a屬性和 b屬性賦值給b類中的a屬和b屬性.第一次我嘗試的方法是 將a類轉為b類.這是乙個錯誤的想法,因為在繼承中是不能向下轉型的.就比如乙個樂器中有薩克斯和小提琴,你可以說小提琴是樂器,但是不能說樂器就是小提琴.然後又查閱資料,了解到使用反射能夠在執行時得到乙個類的各種資訊,所以想法是將想要轉變的父類和子類傳入方法中,然後運用反射將父類中的引數名以及值取出來(此時想要取值的話是通過呼叫get引數名這個方法來取得,例如,有乙個 msg引數,實體類中有getmsg方法才行).取出來後即可將值賦值給傳入的子類.
下面是源**
*//**
* @program: demo
* @description: 反射
* @author: [email protected]
* @create: 2018-03-29 16:02
**/public class demo11
public static void fathertochild(t father,t child) throws exception
class<?> fatherclass = father.getclass();
field declaredfields = fatherclass.getdeclaredfields();
for (int i = 0; i < declaredfields.length; i++)
}/**
* 首字母大寫,in:deletedate,out:deletedate
*/public static string upperheadchar(string in)
}/**
原文:
*/
子類可以直接賦值給父類,但
子類可以賦值給父類,但是只能用父類有的公有方法和屬性。呼叫公有方法時,如果子類重寫了方法則使用子類重寫的方法,如果沒有重寫就使用父類的方法。呼叫公有屬性時,當子類和父類都有相同屬性時,用的是父類屬性。注意,賦值只是賦值給引用具有父類方法和公有屬性的變數而已,記憶體裡還是指向子類的物件,儲存的是子類的...
測試子類物件賦值給父類的引用
public class testget public void b public class testget2 extends testget public static void main string args 列印結果是bbb 修改下 public class testget public ...
型別相容 子類的物件可以給父類指標賦值
乙個公有派生類的物件在使用上可以被當做基類的物件,反之禁止。也就是說 1.派生類的物件可以賦值給基類的物件 如b public a a a b b a b 語法上是允許的 2 派生類的物件可以初始化基類的引用 void f a a int main 3 指向基類的指標可以指向派生類 a p p ne...