class AA//定义类AA及函数funi,fun2
{
public void fun1()
{
System.out.println("调用AA中的fun1");
}
public void fun2()
{
System.out.println("调用AA中的fun2");
}
}
class BB extends AA//类BB继承自AA并覆写了AA中的方法
{
public void fun1()
{
System.out.println("调用BB中的fun1");
}
public void fun2()
{
System.out.println("调用BB中的fun2");
}
}
class CC extends AA//继承自AA并覆写了fun1,自己定义了fun4
{
public void fun1()
{
System.out.println("调用CC中的fun1");
}
public void fun4()
{
System.out.println("调用CC中的fun4");
}
}
public class Demo1
{
public static void main(String args[])
{
AA a1=new BB();//父类对象用子类对象初始化,向上转型可以由程序自动完成
System.out.println("调用是AA的实例?"+(a1 instanceof AA));//instanceOf判断a1是不是AA的对象
System.out.println("调用是BB的实例"+(a1 instanceof BB));
AA a2=new AA();
System.out.println("调用的是AA的实例"+(a1 instanceof AA));
System.out.println("调用的是BB的实例"+(a1 instanceof BB));
}
}
class AA
{
public void fun1()
{
System.out.println("输出AA调用的fun1");
}
public void fun2()
{
System.out.println("输出AA中调用的fun2");
}
}
class BB extends AA
{
public void fun1()
{
System.out.println("输出BB中调用的fun1");
}
public void fun2()
{
System.out.println("输出BB中调用的fun2");
}
}
public class Demo2
{
public static void main(String args[])
{
AA a=new BB();//向上转型
a.fun1();//调用
}
}