跳至主要內容

多态

岁杪二四...大约 2 分钟面向对象学习笔记

多态变量

Java的对象变量是多态的,它们能保存不止一种类型的对象,它们可以保存的是声明类型的对象,或声明类型的子类的对象例:当父类为 item,子类为 CDDVD

public static void main(String args[]){
     item a = new item();
     item b = new CD();   //向上造型
     item c = new DVD();
}

每一个Java的对象变量,都具有两个类型:一个是声明类型,一个是动态类型。有时候两者是一致的,有时候又不一样这就是变量的多态(在运行过程中,它所管理的对象类型是会变化的)

造型(cast)

造型:把一个类型的对象,赋给另一个类型的变量

提示

对象的赋值并不是将一个对象赋值给另一个对象(在C++中可以),而是让这两个对象的管理者去管理同一个对象

当给一个对象变量管理着与它声明(静态)类型不符的对象时,就发生了造型

向上造型

当把子类的对象赋给父类的变量的时候,就发生了向上造型 向上造型是默认的,不需要运算符 向上造型总是安全的

多态

多态指的是不同对象在调用同一个方法时表现出的多种不同行为。它允许不同的对象因为参数的不同对同一消息进行不同的响应。例如:要实现一个动物叫的方法,由于每种动物的叫声是不同的,因此可以在方法中接收一个动物类型的参数,当传入的参数不同时,实现不同动物的叫声。

函数调用的绑定

当通过对象变量调用函数的时候,调用哪个函数这个事情叫做绑定,分为两种:

  • 静态绑定:根据对象的声明类型来决定
  • 动态绑定:根据对象的动态类型来决定
    for(Item item: listItem){
        item.print();
        System.out.println();
    }

当在遍历 listItem时,我们无法知道遍历到的对象到底属于什么类型,但程序会自动调用对应类型的对应方法,这属于动态绑定。


Java中多态主要有以下两种形式:

  • 方法的重载
  • 对象的多态性(方法重写)
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.2.0