0 0

多态 5

的向上转型和向下转型 有什么好处了?  进公司面试的时候  会问吗?  问道了该怎么回答合适了?
2014年5月13日 02:54

2个答案 按时间排序 按投票排序

0 0

采纳的答案

举个例子:有两个类,Father是父类,Son类继承自Father。 

Father f1 =new Son() ; //这就叫upcasting(向上转型 ) 
//现在f1 引用一个指向 一个Son 对象 

Son s1 = (Son)f1 ;  //这个叫downcasting(向下转型 ) 
//现在f1还是指向Son对象

第二个例子: 
Father f2 =new Father(); 
Son s2=(Son)f2;     //出错,子类引用不能直接指向父类对象 

1.父类引用指向子类对象,子类引用不能指向父类对象。
2.把子类对象直接赋给父类引用叫upcasting向上转型,向上转型不用强制转型。
如Father f1=new Son();
3.把指向子类对象的父类引用赋给子类引用叫向下转型(downcasting),要强制转型。

如f1就是一个指向子类对象的父类引用,把f1赋给子类引用s1 即Son s1=(Son)f1;
其中f1前面的(Son)必须添加,进行强制转换。

4.upcasting 会丢失子类特有的方法(下面有说明),但是子类overriding 父类的方法,子类方法有效
5.向上转型的作用, 减少重复代码

2014年5月13日 09:08
0 0

多态的向上转型就是为了同样类型的引用,调用同样的方法,在实际运行中可能会有不同的行为,这就实现了多态。

而向下转型,一般是比较少用的,一般用在需要具体拿到某个子类的引用,去调用子类特有的方法,这个就不是多态了。

2014年5月13日 08:59

相关推荐

    labview创建多态VI

    创建多态VI在LabVIEW中的实现主要依赖于函数选板(Function Palette)上的数据类型结构(Data Type Structure)。下面将详细介绍如何在LabVIEW中创建和使用多态VI。 1. **定义多态VI的基本结构** 在LabVIEW中,一...

    java的编译时多态和运行时多态

    Java 编译时多态和运行时多态 Java 编译时多态和运行时多态是 Java 语言中两个重要的概念,它们都是多态性的实现方式,但它们在实现机制和应用场景上有所不同。 编译时多态 编译时多态是指在编译期根据参数列表的...

    多态的练习案例

    在编程领域,多态(Polymorphism)是面向对象编程中的一个重要概念,它允许我们用一个接口处理多种不同的数据类型。多态性使得程序更加灵活,可扩展性更强,能够提高代码的重用率。本练习案例将深入探讨多态的常见...

    C++继承与多态例子

    在C++编程语言中,继承和多态是面向对象编程(OOP)的两个核心概念。继承允许我们创建一个新类(子类),它继承了另一个类(父类)的属性和方法,从而实现了代码的重用和扩展。多态则是指同一种行为在不同对象上表现...

    java中多态的内存分析

    多态性分为编译时多态和运行时多态,其中运行时多态是Java中最常见的形式,也称为动态绑定。在深入探讨Java中多态的内存分析之前,我们需要先理解一些基本概念。 首先,了解Java内存模型至关重要。Java程序运行时...

    @TypeDiscriminator注解实现多态对象的查询,jackson @JsonTypeInfo注解实现controller多态支持

    在Java开发中,特别是在使用Spring Boot构建Web应用时,我们经常遇到需要处理多态对象的情况。多态性是面向对象编程的重要特性,它允许我们设计更灵活、可扩展的代码。`@TypeDiscriminator` 和 `@JsonTypeInfo` 这两...

    java基础继承封装多态

    本资源摘要信息将对 Java 基础知识点进行总结,涵盖继承、封装、多态等概念,并对面向对象的设计、数据库设计模式等进行讲解。 继承 继承是 Java 中的一种机制,允许一个类继承另一个类的属性和方法。继承的语法是...

    一个HW 多态题目 一个HW 多态题目

    接着,我们来看多态的两种主要形式:编译时多态和运行时多态。编译时多态通常通过函数重载和运算符重载实现,编译器在编译阶段就能确定调用哪个函数。而运行时多态则是在程序运行时才决定调用哪个函数,这是通过虚...

    Java 语言程序设计:第5章接口多态.ppt

    Java 语言程序设计第 5 章接口多态 本章主要讲解 Java 语言程序设计中接口和多态的概念、语法和应用。接口是 Java 语言中的一种抽象机制,它提供了一种定义类之间的“协议”的方式,允许类之间实现多继承,同时免除...

    Java 多态应用,掌握多态

    多态分为编译时多态和运行时多态。编译时多态主要通过方法的重载(Overloading)实现,即在同一个类中定义多个同名但参数列表不同的方法。而运行时多态则是通过方法的重写(Overriding)和接口实现实现,它依赖于...

    java多态的总结

    在Java中,多态分为编译时多态和运行时多态。编译时多态主要体现在方法的重载(Overloading),即在同一个类中可以有多个同名方法,但参数列表不同。编译器会根据传入参数的类型和数量来决定调用哪个方法。运行时...

    java 多态.docx

    在Java编程语言中,多态(Polymorphism)是一种核心特性,它允许我们设计更加灵活、可扩展的代码。多态使得一个接口可以有多种不同的实现或者表现形式,也就是说,同一段代码可以处理不同类型的数据。这主要通过继承...

    类的多态练习_C++_类的多态练习_

    首先,我们要明白多态性的两种主要形式:静态多态(Static Polymorphism)和动态多态(Dynamic Polymorphism)。静态多态主要通过函数重载(Function Overloading)和运算符重载(Operator Overloading)实现,...

    c/c++面试题(一些常出的面试题,包括多态,继承,函数参数等常考的内容)

    C++支持两种类型的多态:静态多态(编译时多态)和动态多态(运行时多态)。静态多态主要通过函数重载和运算符重载来实现,而动态多态则依赖于虚函数和纯虚函数,以及继承机制。 其次,“继承”(Inheritance)是另...

    C++多态技术的实现和反思

    《C++多态技术的实现和反思》一文深入探讨了C++中多态特性的实现原理及其在实践中的应用与局限性。多态作为面向对象编程的核心特性之一,允许程序在运行时根据对象的实际类型调用相应的成员函数,从而提高了代码的...

    基于C++的多态模式编写类的代码多态.docx

    在C++中,多态(Polymorphism)是面向对象编程的一个核心概念,它允许我们使用一个接口来表示多种不同的类型。多态性使得代码更加灵活,可扩展性更强,可以减少代码重复,并提高代码的复用性。在这个文档中,通过两...

    java多态练习题

    java多态、继承练习题,包含题目与答案,............................................................................................................

    多态代码实例

    在编程领域,多态(Polymorphism)是一个关键概念,尤其在面向对象编程中发挥着重要作用。多态允许我们使用一个通用的接口来处理不同类型的对象,提供了代码的灵活性和可扩展性。虚函数(Virtual Function)是实现...

    jave 继承、封装、多态

    面向对象编程是Java的核心特性,它包括三个主要概念:封装、继承和多态。下面将分别详细介绍这三个概念以及它们在Java编程中的应用。 **封装**是面向对象编程的基础,它强调将数据和行为捆绑在一起,形成一个独立的...

    java 多态 经典讲解

    ### Java多态经典讲解 #### 一、理解Java多态 多态,作为面向对象编程的三大特性之一,是继抽象和继承之后的关键概念。它允许我们以统一的接口处理不同类型的对象,增强了代码的灵活性和可扩展性。在Java中,多态...

Global site tag (gtag.js) - Google Analytics