Java多态的使用注意事项多态的使用注意事项
本文讲解了什么是JAVA多态和Java多态是如何实现的,在使用Java多态时需要注意什么,具体大家看下面的内
容
Java多态是如何实现的?多态是如何实现的?
Java的多态和C++一样,是通过延时绑定(late binding)或者说运行时绑定(runtime binding)来实现的。当调用某一个对象
引用的方法时,因为编译器并不知道这个引用到底指向的是变量声明时说明的类型对象,还是该类型子类的对象。因此编译器
无法为这次调用绑定到具体的某个方法。只有通过java中的运行时类型识别(RTTI, Runtime type identification)在运行时绑
定到具体的方法。下面是一个具体的例子:
复制代码 代码如下:
class shape
{
public void draw()
{
print("shape");
}
}
class triangle extends shape
{
public void draw()
{
print("triangle");
}
}
public class Polymorphism {
public static void main(String[] args)
{
shape s=new triangle();
s.draw();
}
结果是triangle
s是一个shape引用,但是在运行时因为是triangle对象,所以还是调用了triangle的draw方法。
Java多态中的一些陷阱多态中的一些陷阱
重写私有方法?重写私有方法?
Java里面是不能重写私有方法的,这个其实很好理解,因为私有方法在子类是不可见的。子类没有继承父类的私有方法,更
谈不上重写了。因此在子类中的同名方法是一个全新的方法。
复制代码 代码如下:
public class Polymorphism {
private void show()
{
print("show parent");
}
public static void main(String[] args)
{
Polymorphism p=new privateMethod();
p.show();
}
}
class privateMethod extends Polymorphism
{
public void show()
{
print("show derived");
}
}