多态与反射
概念
多态
多态:多态就是同一个接口,使用不同的实例而执行不同操作。
此处的接口不要局限于Java中的interface。
多态实现方式:
- 重写
- 接口
- 抽象类和抽象方法
反射
在C++中,可以通过函数指针
vector<void(*)()> v_func;
vector<function<void()>> v_func;//又返回参数修改void
...
v_func[k]();//有传入参数加载括号内
来定义一个函数数组,就避免了在调用不同函数时反复使用switch...case来调用函数。
而Java中则可以用反射实现这个功能!
反射:JAVA反射机制是在运行状态中,对于任意一个类,都能够
知道这个类的所有属性和方法;对于任意一个对象,都能够调用
它的任意一个方法;
例子:
Sort st = new Sort();
Method method = st.getClass().getMethod("methodName", new Class[0]);
method.invoke(st, new Object[0]);
getclass():得到st所属类;
getMethod():得到该类的公有方法。第一个参数是方法名,第二个参数表示方法形参(相同方法名参数不同的情况)。此处new Class[0] = null;
method.invoke:执行该方法。第一个参数调用该方法的实例,对于静态方法可以用null代替,第二个参数是变长的,是该方法调用所使用的参数。