多态:父类或者接口的引用指向其子类的对象,即一个对象对应着不同类型。
多态时成员的特点:
- 成员变量。
编译时:参考引用型变量所属的类中是否有调用的成员变量,有,编译通过,没有,编译失败。
运行时:参考引用型变量所属的类中是否有调用的成员变量,并运行该所属类中的成员变量。
简单说:编译和运行都参考等号的左边。 - 成员函数(非静态)。
编译时:参考引用型变量所属的类中是否有调用的函数。有,编译通过,没有,编译失败。
运行时:参考的是对象所属的类中是否有调用的函数。
简单说:编译看左边,运行看右边。 - 静态函数。
编译时:参考引用型变量所属的类中是否有调用的静态方法。
运行时:参考引用型变量所属的类中是否有调用的静态方法。
简单说:编译和运行都看左边。
下面是实例:
class Fu
{
int num = 3;
void show()
{
System.out.println("fu show");
}
static void method()
{
System.out.println("fu static show");
}
}
class Zi extends Fu
{
int num = 4;
void show()
{
System.out.println("zi show");
}
static void method()
{
System.out.println("zi static show");
}
}
class Test
{
public static void main(String[] args)
{
// Zi z = new Zi();
// System.out.println(z.num);//输出结果为4
// Fu f = new Zi();//多态
// System.out.println(f.num);//输出结果为3
// Zi z = new Zi();
// z.show();//输出zi show
//
// Fu f = new Zi();
// f.show();//输出zi show
Fu f = new Zi();
f.method();//输出fu static show
}
}