您的位置:首页 > 编程语言 > Java开发

java基础<八>-------多态

2015-11-25 18:08 447 查看
java基础<八>-------多态
1.    定义:某一类事物的多种存在形态

例:动物中猫,狗。

猫这个对象对应的类型是猫类型:猫 x = new猫();

同时猫也是动物中的一种,也可以把猫称为动物:动物y = new猫();

动物是猫和狗具体事物中抽取出来的父类型。

父类型引用指向了子类对象。

多态性简单说就是一个对象对应着不同类型。

体现:

父类或者接口的引用指向或者接收自己的子类对象。

作用:

多态的存在提高了程序的扩展性和后期可维护性。

前提:

1).需要存在继承或者实现关系。

2).需要有覆盖操作。

好处:

提高了代码的扩展性,前期定义的代码可以使用后期的内容。

弊端:

前期定义的内容不能使用(调用)后期子类的特有内容。

实例:



运行结果:



实例2:



运行结果:



注:instanceof:用于判断对象的具体类型,只能用于引用数据类型判断,通常在向下转型前用于健壮性的判断。

实例:



运行结果:



多态时,成员的特点:

1).成员变量

编译时:参考引用型变量所属的类中是否有调用的成员变量。有,编译通过,没有,编译失败。

运行时:参考引用型变量所属的类中是否有调用的成员变量,并运行该所属类中的成员变量。

简单说:编译和运行都参考等号的左边。

实例:



运行结果:



2).成员函数(非静态)

编译时:参考引用型变量所属的类中是否有调用的函数。有,编译通过。没有,编译失败。

运行时:参考的是对象所属的类中是否有调用的函数。

简单说:编译看左边,运行看右边。

实例:



运行结果:



3).静态函数

编译时:参考的是对象所属的类中是否有调用的函数。

运行时:参考的是对象所属的类中是否有调用的函数。

简单说:编译和运行看左边。

实例:



运行结果:



2.    内部类

定义:

将一个类定义在另一个类的里面,里面那个类就称为内部类(内置类,嵌套类)。

访问特点:

内部类可以直接访问外部类中的成员,包括私有成员。

而外部类要访问内部类中的成员必须要建立内部类的对象。

实例:



运行结果:



内部类的位置:

内部类定义在成员位置上,可以被private、static成员修饰符修饰。被static修饰的内部类只能访问外部类中的静态成员。

注:如果内部类是静态的,内部类成员也是静态的,可以不用创建内部类对象,直接调用。

实例:



运行结果:



注:1)、如果内部类中定义了静态成员,该内部类也必须是静态的!

        2)、为什么内部类能直接访问外部类中的成员呢?

那是因为内部类持有了外部类的引用,外部类名.this。

               3)、内部类定义在局部位置上,也可以直接访问外部类中的成员。同时可以访问所在局部中的局部变量,但必须是被final修饰的。

3.   匿名内部类

定义:

就是内部类的简化写法。

前提:

内部类可以继承或实现一个外部类或者接口。

格式:

new外部类名或者接口名(){覆盖类或者接口中的代码,(也可以自定义内容。)}

简单理解:就是建立一个带内容的外部类或者接口的子类匿名对象。

什么时候使用匿名内部类呢?

通常使用方法是接口类型参数,并且该接口中的方法不超过三个,可以将匿名内部类作为参数传递。

好处:增强阅读性。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: