多态
分清引用和被引用。(person p=new person(),实例是被应用,p是引用变量)
多态的成员变量在编译运行时都看左边的引用变量。
注:编译时不产生对象,只检查语法错误。
例子:
package exercise;
public class bilaoye {
private int shangke=12;
void jiangke(){
System.out.println("计算机应用");
}
void diaoyu(){
System.out.println("钓鱼");
}
}
package exercise;
public class bilaoshi extends bilaoye {
void jiangke(){
System.out.println("数据结构");
}
void kandianying(){
System.out.println("看电影");
}
}
package exercise;
public class laoshi {
public static void main(String[] args){
bilaoye a=new bilaoshi();
a.jiangke();//成员方法,编译看引用变量,运行看对象所属的类的即左边的,输出子类中的内容
a.diaoyu();//成员方法,编译看引用变量,运行看对象所属的类的即左边的,编译看bilaoye可以通过,运行看bilaoshi,
//因为其继承了父类,有diaoyu方法,所以运行可以通过
//a.kandianying();//由于编译看的引用变量即bilaoye 类中没有kandianying方法,编译通过不了
bilaoshi b=(bilaoshi) a;
b.diaoyu();//子类继承了父类的方法
b.jiangke();//应经转换为了子类
b.kandianying();//正果过程中都是子类的对象在做变换
}
}
2.静态函数
不管编译还是运行参考的都是引用变量所属的类中是否有调用的成员。
(因为静态方法,其实不属于对象,属于该方法所在的类。都看左边)
3.成员变量
不管编译还是运行参考的都是引用变量所属的类中是否有调用的成员。
原文:http://www.cnblogs.com/xleer/p/5315777.html