标签:
参数传递
基本数据类型是复制值,引用数据类型是复制引用。
因此传递引用作为参数后可以通过引用的方法改变其字段,但改变形参(引用)本身,不会改变实参(引用)本身。
......
int [] b = new int[2];
modify(b);//b still --->int[2]
}
void modify(int[] b){
b[0]++;//change the first element of int[2]
b=new int[5];// do not change the b outside
}
多态
一个程序中相同名字表示不同含义
编译时多态:重载 (同名方法)
运行时多态:覆盖,动态绑定(dynamic binding,也叫虚方法调用virtual method invoking)
upcasting
派生类型当基本类型处理,Person p = new Stu();
void fun(Person p){...} fun(new Person()); fun(new Stu());
虚方法调用,根据方法的实际传入的实例的类型来决定选用哪个方法
所有非final方法都自动动态绑定
if (a instanceof className) //判断a是不是classname类型(或它的子类类型)
普通方法是虚方法 invokevirtual
static方法不是虚方法,属于类,与实例类型无关 invokestatic
private方法不是虚方法,子类看不见它,无法overwrite它 invokespecial
final方法子类无法覆盖,不存在虚化
标签:
原文地址:http://www.cnblogs.com/jack-xu/p/4801431.html