public class Test{
public static void main(String[] arge) throws Exception{
Parent p = new Child();
p.output();
}
}
class Parent{
public void output() throws NullPointerException{
System.out.println("parent");
}
}
class Child extends Parent
{
public void output() throws Exception{
System.out.println("child");
}
}
1,程式是否能編譯通過?
2,如果能編譯通過,程式輸出什麼?
程式無法通過編譯。
關于java中的方法重寫 override?
1,子類的方法與父類的方法有相同的傳回類型,相同的方法名,相同的參數清單。
2,子類的方法的通路級别不能低于父類中該方法的通路級别。
3,子類中方法抛出的異常範圍不能大于父類中方法抛出的異常的範圍。
-----------------------
通過反射改變private變量值
public class PrivateTest{
private String name = "hello";
public String getName(){
return name;
}
}
以上程式可否改變 那麼值?
可以,通過反射。
擷取某個類的對應的Class對象的方式?
1,通過類的.class文法
2,通過類的對象的getClass()方法
3,通過Class對象的forName()方法
4,對于包裝類(8種基本資料類型的包裝類),可以通過.TYPE文法方式
實作
import java.lang.reflect.Field;
public class ReflectionTest{
public static void main(String[] arge) throws Exception{
PrivateTest pt = new PrivateTest();
Class<?> class = PrivateTest.class;
Field field = class.getDeclaredField("name");
field.setAccessible(true);
field.set(pt, "world");
System.out.println(pt.getName());
}
}