java048多态的概述和实现及多态的成员特点及习题练习

2018-12-13  本文已影响0人  牛倩贱

1.多态的前提:

a.子父类的继承关系

b.方法的重写

c.父类应用指向子类对象

例:

public class PoymorphicDemo{

    public static void main(String [] args){

    父类引用:Animal  a

    指向: =

    子类对象:new  Cat()

Animal  a = new  Cat();

a.eat( );

}

}

class  Animal {

    public void eat( ) {

    Syatem.out.println("吃东西");

}

}

calss Cat extends Animal(

    public void eat( ) {

    System.out.println("猫吃鱼");

    }

}

运行结果是猫吃鱼,这叫动态绑定:指运行期间的调用是根据其具体的类型决定的。

2.多态成员的特点

a.成员变量:编译时看的是父类,运行时看的也是父类,因为变量是没有重写的概念的。

b.成员方法:编译时看的是父类,运行时看的是子类,是具体的对象。(动态绑定)

c.静态方法:编译时看的是父类,运行时看的也是父类

    例:Dad d = new kid();

                d.function( );//使用变量去调用方法,其实相当于变量类型的类名去调用,即d变量的类名Dad去调用,所以就得到了运行时看的也是父类

java048多态的概述和实现及多态的成员特点及习题练习

int s=(i++)+(++i)+(i--)+(--i);

int s = (5)+(++6)+(7--)+(--6)

=5+7+7+5

=24;

java048多态的概述和实现及多态的成员特点及习题练习

X值为4,当传入时,进入case 4 J++之后,没有break关键字,所以继续顺序执行,将 5 和default都执行完 J的值也为4  所以结果为8。

java048多态的概述和实现及多态的成员特点及习题练习

执行顺序如下:

静态代码块      构造代码块      构造函数    main()

所以结果是B。

先初始化静态变量x=10;//x=10

执行第一个静态代码块,x=x+5; //x=15

执行第二静态代码块 x=x/3; //x=5

执行主方法: 输出x=5

在类中定义的{}之间被称为构造块,构造块相对于构造方法先执行,构造块之间按照代码编译顺序执行

上一篇 下一篇

猜你喜欢

热点阅读