java的反射机制 与 多态
最近不是很忙,偷闲整理一下笔记。新手上路,多多包涵。
一、多态(父类引用指向子类对象):
1)使用父类类型的引用指向子类的对象;
2)该引用只能调用父类中定义的方法和变量;
3)如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连接、动态调用)
4)变量不能被重写(覆盖),”重写“的概念只针对方法,如果在子类中”重写“了父类中的变量,那么在编译时会报错。
二、反射:
1)获取一个对象的类信息.
—获取一个类的访问修饰符、成员、方法、构造方法以及超类的信息.
—检获属于一个接口的常量和方法声明.
—创建一个直到程序运行期间才知道名字的类的实例.
—获取并设置一个对象的成员,甚至这个成员的名字是在程序运行期间才知道.
—检测一个在运行期间才知道名字的对象的方法
2)优点:能够运行时动态获取类的实例,大大提高系统的灵活性和扩展性。 与Java动态编译相结合,可以实现无比强大的功能
3)缺点:使用反射的性能较低 :使用反射相对来说不安全 :破坏了类的封装性,可以通过反射获取这个类的私有方法和属性
4)例子:
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException{
//Class c = Class.forName("FanShe");
System.out.println("c=============="+FanShe.class);//获取类名
System.out.println("new==============="+FanShe.class.newInstance());//实例化
FanShe.class.newInstance().chesi();//通过反射获取实例,并调用该类方法
}