多态
1. 以前以为多态只发生在创建对象完毕后,再调用对象的成员方法时才发生,其实在创建对象的过程中也存在多态的,以前居然一直没搞明白,汗!!!
基础知识不扎实!
测试多态
public class Test6
{
public static void main(String[] args)
{
Parent son = new Son();
// 发生多态
son.hello();
System.out.println("------------------------------------");
new Parent().hello();
}
}
class Parent
{
public void hello()
{
System.out.println("parent.hello()");
}
public Parent()
{
// 这里也会发生多态, 如果是在子类构造函数中调用的父类构造函数, 这里就会调用子类的hello()方法
hello();
// 这里也会发生多态, 如果是在子类构造函数中调用的父类构造函数, 这里就会调用子类的getClass()方法
System.out.println(getClass().getName());
}
}
class Son extends Parent
{
public void hello()
{
System.out.println("son.hello()");
}
}
{
public static void main(String[] args)
{
Parent son = new Son();
// 发生多态
son.hello();
System.out.println("------------------------------------");
new Parent().hello();
}
}
class Parent
{
public void hello()
{
System.out.println("parent.hello()");
}
public Parent()
{
// 这里也会发生多态, 如果是在子类构造函数中调用的父类构造函数, 这里就会调用子类的hello()方法
hello();
// 这里也会发生多态, 如果是在子类构造函数中调用的父类构造函数, 这里就会调用子类的getClass()方法
System.out.println(getClass().getName());
}
}
class Son extends Parent
{
public void hello()
{
System.out.println("son.hello()");
}
}
2. 输出结果:
son.hello()
cn.nami.io.Son
son.hello()
------------------------------------
parent.hello()
cn.nami.io.Parent
parent.hello()