Java 多态 与 抽象 概括

       
     多态


静态多态:使用重载实现。

动态多态:使用动态绑定和重写实现


  静态多态的:
     能够在编译期间,就能够确定是方法是被哪一个对象所执行的重载或者重写,都是属于静态多态。


动态多态的技术基础


向上转型技术:一个父类的引用变量可以指向不同的子类对象,或者说一个子对象可以被当作一个父类类型。

instanceof关键字: instanceof关键字用于判断运行时对象的真正类型。

动态绑定技术:运行时根据父类引用变量所指对象的实际类型执行相应的子类方法,从而实现多态性.


引用数据的向上转型,是指父类转型,这个编译器会自动识别.

能自动转型成功,原因是:父类的范围 >>> 子类的范围.

引用数据类型转型,只能发生在父子之间,不能去玩:指鹿为马的事.

为什么父类的引用,可以指向子类的实现?

因为子类的实例中,一定拥有一个完整的父类的索引的值数据.

引用数据类型向下是有风险的.不是说一定能转型成功.如果需要转型成功,必须满足两个条件:

1、必须是父类的引用指向子类的实现.

2、必须是子类的引用最终必须指向之相同类型的子类实现.

instanceof关键字作用:判断某个对象是否是某种类型的对象.

instanceof的目的:规避掉在-强制向下-转型中可能会出现的风险性.

Java语言的多态机制导致了引用变量的声明类型和实际引用对象的类型可能不一致。为更准确鉴别一个对象的真正类型, Java语言引入了 instanceof运算符。

动态绑定机制

在面向对象程序开发中,我们将一个方法调用与该方法所在的类关联起来,称为“绑定”.

所谓动态绑定,是指在运行时根据具体对象的类型进行绑定。

当父类引用指向子类对象的时候,如果调用被子类重写的方法,那么表现得不是父类中的效果而是子类重写后的效果。

多态的主要应用--多态参数,

所谓多态参数,就是当方法的某个形式参数是一个引用的时候,与该引用兼容的任何对象都可以传递给方法,从而允许方法接受不同数据类型的形式参数。

如果方法中调用该对象的一个被重写的方法。那么不同类型的子类对象会表现出不同的体现。

多态的主要应用-异构集合

多态另一个常见的应用是创建一个不是同一类型 ,但是有共同父类的数据集合。不同对象的集合称为异构集合。


       抽象

(1)在编写类时,通常会在类中定义一些方法,用来描述该类所具有的行为。在类的方         
法体中,我们编写代码实现该类所要执行的行为。

(2)在继承关系中,子类继承父类后,子类也就具有 , 父类所具备的行为。如果子类继  

承了父类的行为 ,但是与父类的行为实现方式不同,就需要通过方法重写来覆盖父类的行为。
(3)当抽象到一定的程度的时候,我们发现父类是没有必要进行实例化。


abstract  关键字 .
可以声明一个抽象类。该关键字可以出现声明时class关键字前的任何地方.
        public abstract class Test{

        }

在定义抽象的方法的时候,最大的作用:用来规范子类的行为.


如果一个类中存在抽象方法,那么那个类也就是一个抽象类.
但是抽象中,不一定必须要有抽象方法(语法上).
抽象类无法实例化.


抽象中可以继续编写:成员变量,常量,静态常量,初始块,行为,甚至连构造都可以.
但是构造器此时的作用,并非是为了创建对象而是用于分配成员变量的存储空间.

猜你喜欢

转载自blog.csdn.net/x954147048/article/details/82624739