多态和静态

2007-8-21 Jerry Java

面向对象(Object Orientation)三大特征:封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism)。

多态,是指可以引用子类型对象,其声明的类型在编译时决定了可以调用哪些方法,但具体在运行时会根据实际创建对象的类型选择。

静态,是指变量或方法属于类自身,而不是属于任何具体的实例。

当多态遇到静态的时候,会发生什么呢。

举个例子来说明:

(1)非静态+多态(子类重写方法):

[code]
class Animal
{
void doStuff()
{
System.out.print("a");
}
}

class Dog extends Animal
{
void doStuff()
{
System.out.print("d");
}

public static void main(String... args)
{
Animal a = new Dog();
a.doStuff();
}
}
[/code]

运行结果:
d

(2)静态+多态(子类重新定义静态方法):

[code]
class Animal
{
static void doStuff()
{
System.out.print("a");
}
}

class Dog extends Animal
{
static void doStuff()
{
System.out.print("d");
}

public static void main(String... args)
{
Animal a = new Dog();
a.doStuff();
}
}
[/code]

运行结果:
a

所以,请注意,多态依靠继承,应用于重写(或者叫覆盖),不是重载。而静态方法是不能被重写的,但是可以在子类中重新定义。


发表评论:

Powered by emlog sitemap