class Fu
{
boolean show(char a)
{
System.out.println(a);
return true;
}
}
class Demo extends Fu
{
public static void main(String[] args)
{
int i=0;
Fu p=new Fu();//建立父类对象,
Fu f=new Demo();//建立父类引用指向子类对象,是多态在程序中的体现形式
//多态中成员的特点:非静态成员方法,编译看左边,运行看右边 其他情况,编译运行都看左边
Demo d=new Demo();//建立子类对象
for(f.show('A');p.show('B')&&(i<2);f.show('C'))
/*
1,f.show('A')运行时看等号右边,即Demo类中的show方法,打印A,返回false(初始化语句的返回没啥用)
2,执行判断语句,p.show('B'),父类对象直接调用父类中的show,打印B,返回true,
&&双与时,两边同为真,才为真,此时i=0<2,满足判断语句,执行for循环中的内容
3,i++,i=1,执行d.show('D');直接调用子类中的show,打印D,返回false
4,执行循环操作表达式f.show('C'),和第一步一样,打印C,返回false.
5,执行判断语句,即重复2步骤,打印B,此时i=1<2,执行for循环中的内容
6,执行3步骤,打印D,此时i++后,为2
7,重复4步骤,打印C
8,重复2步骤,打印B,而此时i=2不满足i<2条件,跳出循环!!
故:打印顺序为A,B,D,C,B,D,C,B
其实只要明白多态和for循环的特点,然后一步一步慢慢来就好,多态的特点前期只要记住就好,不用过深研究
*/
{
i++;
d.show('D');
}
}
boolean show(char a)
{
System.out.println(a);
return false;
}
}
|