5_面向对象-中之面向对象的特征三:多态性(代码片段)

chengmr chengmr     2022-12-08     486

关键词:

1.多态性的理解:可以理解为一个事物的多种形态。

2.何为多态性:
对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)

举例:
Person p = new Man();
Object obj = new Date();

3.多态性的使用:虚拟方法调用

  > 有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。
  > 总结:编译,看左边;运行,看右边

4.多态性的使用前提:

  ① 类的继承关系  ② 方法的重写

5.多态性的应用举例:

举例一:
    public void func(Animal animal)//Animal animal = new Dog();
        animal.eat();
        animal.shout();
    
举例二:
public void method(Object obj)
        
    
举例三:
class Driver
    
    public void doData(Connection conn)//conn = new MySQlConnection(); / conn = new OracleConnection();
        //规范的步骤去操作数据
//        conn.method1();
//        conn.method2();
//        conn.method3();
        
    
    

6.多态性使用的注意点:

对象的多态性,只适用于方法,不适用于属性(编译和运行都看左边)

7.关于向上转型与向下转型:
  7.1 向上转型:多态
  7.2 向下转型:

   7.2.1 为什么使用向下转型:

    有了对象的多态性以后,内存中实际上是加载了子类特有的属性和方法的,但是由于变量声明为父类类型,导致编译时,只能调用父类中声明的属性和方法。子类特有的属性和方法不能调用。如何才能调用子类特的属性和方法?使用向下转型。

   7.2.2 如何实现向下转型:使用强制类型转换符:()

   7.2.3 使用时的注意点:

    ① 使用强转时,可能出现ClassCastException的异常。
    ② 为了避免在向下转型时出现ClassCastException的异常,我们在向下转型之前,先进行instanceof的判断,一旦返回true,就进行向下转型。如果返回false,不进行向下转型。

   7.2.4 instanceof的使用:

    ① a instanceof A:判断对象a是否是类A的实例。如果是,返回true;如果不是,返回false。
    ② 如果 a instanceof A返回true,则 a instanceof B也返回true.其中,类B是类A的父类。

    ③ 要求a所属的类与类A必须是子类和父类的关系,否则编译错误。

   7.2.5 图示:

    技术图片

 

 8. 面试题:

  

8.1 谈谈你对多态性的理解?
① 实现代码的通用性。
② Object类中定义的public boolean equals(Object obj)  
  JDBC:使用java程序操作(获取数据库连接、CRUD)数据库(MySQL、Oracle、DB2、SQL Server)
③ 抽象类、接口的使用肯定体现了多态性。(抽象类、接口不能实例化)
8.2 多态是编译时行为还是运行时行为

 

    

  

5_面向对象-中之方法的重写(代码片段)

1.什么是方法的重写(override或overwrite)?  子类继承父类以后,可以对父类中同名同参数的方法,进行覆盖操作.2.应用  重写以后,当创建子类对象以后,通过子类对象调用子父类中的同名同参数的方法时,实际执行的是子类... 查看详情

javase基础知识—面向对象(5.4面向对象三大特征:封装继承多态)

面向对象编程具有三大特征:封装继承多态一、封装1、好处狭义的封装:也就是属性的封装,避免了任意赋值的危险,提高了数据的安全性!  ①隐藏一个类中不需要对外提供的实现细节  ②使用者只能通过实现定制好的... 查看详情

面向对象(代码片段)

面向对象三大特征封装多态继承类对象单继承super类的约束异常处理类的私有成员属性反射isinstance和issubclasstype双下方法面向对象(类)三大特征封装指函数,模块,类,对象等,将一些数据或者内容封装到一个空间,可以调用多态指一种... 查看详情

5.面向对象的特征

...,而现实生活中的业务其实就是一个个对象协作的过程。面向对象编程就是按现实业务一样的方式将程序代码按一个个对象进行组织和编写,让计算机系统能够识别和理解用对象方式组织和编写的程序代码,这样就可以把现实生... 查看详情

java面向对象三大特征之继承和多态(代码片段)

...转型多态代码案例总结前言  上一篇博客我们介绍了Java面向对象思想以及三大特征之一的封装。本文将介绍面向对象三大特征的剩下两个特征——继承和多态,我个人认为继承和多态是三个特征中比较重要且理解起来稍有... 查看详情

专题三面向对象(代码片段)

...码块、内部类2.面向对象的三大特征:封装性、继承性、多态性、(抽象性)3.其它关键字:this、super、static、final、abstract、interface、package、import等“大处着眼,小处着手”面向过程(POP)与面向对象(OOP)二者都是一种思想,面向对象... 查看详情

python入门-6面向对象编程:07面向对象三大特征(封装继承多态)-继承(代码片段)

一:面向对象三大特征介绍  Python是面向对象的语言,也支持面向对象编程的三大特性:继承、封装(隐藏)、多态。  封装(隐藏)    隐藏对象的属性和实现细节,只对外提供必要的方法。相当于将“细节封装... 查看详情

面向对象三大特征之多态(代码片段)

面向对象的三大特征:封装、继承、多态。今天重点来看一下“多态”。封装  指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。将属性或方法进行封装,防止外部程序随机访问,加强代码的安全性。继承&n... 查看详情

面向对象的三大特征,用一个整体表示?(代码片段)

1.三个类和一个函数来表达,这个面向对象的三大特征#封装继承多态整体写的方法classAnimal:defdong(self):#封装print(‘动物在动‘)defchi(self):print(‘动物在吃‘)classCat(Animal):#继承def__init__(self,maose,pinzhong,nianling,xingbie):self.maose=maoseself.pin 查看详情

5_面向对象-中之子类对象实例化全过程

1.从结果上看:继承性  >子类继承父类以后,就获取了父类中声明的属性或方法。  >创建子类的对象,在堆空间中,就会加载所有父类中声明的属性。2.从过程上看:  当我们通过子类的构造器创建子类对象时,我们... 查看详情

面向对象的三大特征:继承封装多态(代码片段)

面向对象:面向对象专注于由谁来解决这个过程,而调用者无需关注对象实现的细节编程特点:出现了一个个的类,从类中拿到对象,通过对象直接解决问题类:具有一系列相同属性(特征)和方法(行为)的个体的集合称为类   ... 查看详情

面向对象的三大特征之三——多态

...类型表现出多种状态。在Java中多态分为两类。一、方法多态性——方法的重载和重写。关于这部分内容已经在前面的内容有过详细的记录,即重复调用的代码块—方法和面向对象的特性之二—继承。二、对象的多态性——引用... 查看详情

java面向对象编程三大特征-多态

Java面向对象编程三大特征-多态本文关键字:Java、面向对象、三大特征、多态多态是面向对象编程的三大特征之一,是面向对象思想的终极体现之一。在理解多态之前需要先掌握继承、重写、父类引用指向子类对象的相关概念,... 查看详情

面向对象的特征有哪些?

Java语言的特点有哪些?1.简单性:2.面向对象3.与平台无关4.安全性和健壮性(鲁棒性)5.多线程  面向对象的特征有哪些?08年以前面向对象的特征:思维方式的特征,是三大特征:3大特征1.封装2.继承3.多态Java是第一个纯... 查看详情

java基础面向对象三个特征:多态(代码片段)

一、多态的概述  多态:一个对象拥有多种形态    eg:小明是一个学生(学生形态),同时也是一个人(人类形态)  多态的格式与使用:父类引用指向子类对象    格式:父类名称对象名=new子类名称()    ... 查看详情

5_面向对象-中之关键字:super

1.super关键字可以理解为:父类的2.可以用来调用的结构:属性、方法、构造器3.super调用属性、方法:  3.1我们可以在子类的方法或构造器中。通过使用"super.属性"或"super.方法"的方式,显式的调用父类中声明的属性或方法。但... 查看详情

python基础入门笔记———文件操作面向对象异常模块包(代码片段)

...1.3.5获取当前目录1.3.6改变默认目录1.3.7获取目录列表二、面向对象基础2.1面向对象的实现方法2.1.1定义类2.1.2创建对象2.1.3self2.2添加和获取对象属性2.3魔法方法2.3.1__init__()2.3.2__str__()2.3.3__del__()三、面向对象继承3.1旧式类与新式类3... 查看详情

python基础入门笔记————文件操作面向对象异常模块包(代码片段)

...1.3.5获取当前目录1.3.6改变默认目录1.3.7获取目录列表二、面向对象基础2.1面向对象的实现方法2.1.1定义类2.1.2创建对象2.1.3self2.2添加和获取对象属性2.3魔法方法2.3.1__init__()2.3.2__str__()2.3.3__del__()三、面向对象继承3.1旧式类与新式类3... 查看详情