简单的说就是一个对象有这不同的类型。
多态在代码中的体现:父类或者接口的引用指向其子类的对象;
多态的好处:提高了代码的扩展性,前期定义的代码可以使用后期的内容;
多态的弊端:前期定义的内容不能使用(调用)后期子类的对象;
多态的前提:必须有关系,继承,实现;要有覆盖。
多态
1 成员变量
编译时:参考引用型变量所属的类中的是否有调用的成员变量,有,编译通过,没有,编译失败;
运行时:参考引用型变量所属的类中的是否有调用的成员变量,并运行该所属类中的成员变量
简单说:编译和运行都参考等号的左边
2 成员函数(非静态)
编译时:参考引用型变量所属的类中的是否有调用的函数,有,编译通过,没有,编译失败;
运行时:参考的是对象所属的类中是否有调用的函数
简单说:编译看左边,运行看右边
因为成员函数存在覆盖特性
3 静态函数
编译时:参考引用型变量所属的类中的是否有调用的静态方法。
运行时:参考引用型变量所属的类中的是否有调用的静态方法。
简单说,编译和运行都看左边。
其实对于静态方法,是不需要对象的。直接用类名调用即可。
代码示例
class Fu
{
// int num = 3;
void show()
{
System.out.println("fu show");
}
static void method()
{
System.out.println("fu static method");
}
}
class Zi extends Fu
{
// int num = 4;
void show()
{
System.out.println("zi show");
}
static void method()
{
System.out.println("zi static method");
}
}
class DuoTaiDemo3
{
public static void main(String[] args)
{
Fu.method();
Zi.method();
Fu f = new Zi();//
// f.method();
// f.show();
// System.out.println(f.num);
// Zi z = new Zi();
// System.out.println(z.num);
}
}
运行结果
fu static method
zi static method
fu static method
zi show
3
4