❶ 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);
}
}