面向对象之多态

mb62c3ac8538829 mb62c3ac8538829     2022-11-29     511

关键词:


 

/*
*作者:呆萌老师
*☑csdn认证讲师
*☑51cto高级讲师
*☑腾讯课堂认证讲师
*☑网易云课堂认证讲师
*☑华为开发者学堂认证讲师
*☑爱奇艺千人名师计划成员
*在这里给大家分享技术、知识和生活
*各种干货,记得关注哦!
*/

面向对象之多态_向上转型

1、什么是多态

        多态是我们可以创建在不同变成上下文中行为不同的方法或者引用的能力。其简而言之就是调用同一种方法却呈现不同的状态。

        在面向对象中多态与封装,继承并称为面向对象的三大特性。

2、多态的产生

        是因为由于方法重载/覆盖使得我们的方法的实现发生了改变,但是我们的标识符却没变,因此产生了多态。

3、Java中的多态

        在Java中多态可以分为运行时多态与编译时多态。

        编译时多态:方法重载时参数的静态数据绑定。通过方法重载实现控制流由编译时本身决定的一种方式。

        运行时多态:通过继承实现方法覆盖使得数据动态绑定。

package next.overrideinextends;
public class GrandFather
public void eatPotato()
System.out.println("Be careful! The potato is sooo hot!");


class Father extends GrandFather
@Override
public void eatPotato()
System.out.println("Nice!");


class Son extends Father
@Override
public void eatPotato()
System.out.println("Nice!");


class Output
public static void main(String[] args)
GrandFather gf = new GrandFather();
GrandFather f = new Father();
GrandFather s = new Son();
s.eatPotato();
f.eatPotato();
gf.eatPotato();


面向对象之多态_向上转型_02

运行结果:

面向对象之多态_向上转型_03


面向对象之多态_向上转型_04

编辑

 4、向上转型的特点

        ①向上转型其实就是将子类的内容赋值给父类。

        ②若子类在父类的基础上做了方法扩展,则子类扩展的功能将无法被父类调用。

        ③子类若是对父类的方法重写了,则向上转型后,父类调用该方法将不再执行父类的内容而是执行子类的内容。

        

5、向上转型的好处

        向上转型实现了引用的类型统一以及传递参数的统一。

public class GrandFather 
public void eatPotato()
System.out.println("Be careful! The potato is sooo hot!");


class Father extends GrandFather
@Override
public void eatPotato()
System.out.println("Nice!");


class Son extends Father
@Override
public void eatPotato()
System.out.println("Nice!");


class Output
public void aVoid(GrandFather f)
f.eatPotato();

public static void main(String[] args)
GrandFather gf = new GrandFather();
GrandFather f = new Father();
GrandFather s = new Son();
Output output=new Output();
output.aVoid(gf);
output.aVoid(f);
output.aVoid(s);


面向对象之多态_向上转型_05

更多关注

​https://edu.51cto.com/course/20203.html​

面向对象特性之多态

废话少说,直接上代码: ‘可飞行的PublicInterfaceIFlyable‘开始飞行SubStartFlying()EndInterface PublicClassPlaneImplementsIFlyablePublicSubStartFlying()ImplementsIFlyable.StartFlyingConsole.WriteLine("飞机打开引擎飞行")E 查看详情

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

...面的内容有过详细的记录,即重复调用的代码块—方法和面向对象的特性之二—继承。二、对象的多态性——引用类型转换。1.向上转型(自动转型)——子类对象自动转换为父类对象。1classFather2{3publicvoidspeak()4{5System.out.println( 查看详情

面向对象之封装与多态

一、多态1.多态多态指的是一类事物有多种形态水有多种形态:冰水雾水动物有多种形态:人,狗,猪importabcclassAnimal(metaclass=abc.ABCMeta):#同一类事物:动物@abc.abstractmethoddeftalk(self):passclassPeople(Animal):#动物的形态之一:人deftalk(self):pr... 查看详情

面向对象之多态

print(‘面向对象之多态‘)‘‘‘利用组合解决代码冗余问题1.什么是组合?组合指的是一个对象拥有某一个属性,该属性的值是另一个类的对象例如:obj=Foo()###obj是调用类产生的一个对象obj.attr1=Bar1()obj.attr2=Bar2()obj.attr3=Bar3()这样我们... 查看详情

java面向对象之多态(代码片段)

...态的实现3.小结 1.多态的含义       多态,是Java面向对象的三大特性之一,使用之地特别广泛。那么什么是多态呢?多态是同一个行为具有多个不同表现形式或形态的能力。比如炒菜这个行为在不同厨师身上会产... 查看详情

java面向对象之多态(代码片段)

...态的实现3.小结 1.多态的含义       多态,是Java面向对象的三大特性之一,使用之地特别广泛。那么什么是多态呢?多态是同一个行为具有多个不同表现形式或形态的能力。比如炒菜这个行为在不同厨师身上会产... 查看详情

java面向对象之多态

多态(Polymorphism):我们说子类就是父类,因此多态的意思就是:父类型的引用可以指向子类的对象public class PolyTest { public static void main(String[] args) { // TODO 自动生成的方法存根 Flower r 查看详情

java面向对象之多态

多态(Polymorphism):我们说子类就是父类,因此多态的意思就是:父类型的引用可以指向子类的对象public class PolyTest { public static void main(String[] args) { // TODO 自动生成的方法存根 Flower r 查看详情

java面向对象之多态

多态:1意义:1.1同一类型的引用指向不同的对象是,有不同的实现-----行为的多态1.2同一对象被造型为不同的类型时,有不同的功能--------对象的多态2向上造型:-----自动类型转换2.1超类型的引用指向派生类的对象2.2能造型成为... 查看详情

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

#面向对象的三大特性之多态#多态由不同的类实例化得到的对象,调用同一个方法,执行的逻辑不同#多态的概念指出了对象如何通过他们的属性和动作来操作及访问,而不需要考虑他们具体的类#多态表明了动态(运行时)绑定... 查看详情

十面向对象之多态

1.多态的概念 一种事物的多种体现形式 方法重载,方法的重写都是多态的体现 2.多态的体现形式 a.父类的引用指向子类的对象 b.接口的引用指向实现类的对象 总结: a.如果使用了多态,将不能访问子类或者实现类中特有的属... 查看详情

面向对象之多态(代码片段)

多态的概念多态指的是一类事物的多种形态,例如水有固态、液态、气态,动物有人、狗、猪,这是动物的不同形态。可能你会领悟,人狗猪不是继承于动物类吗?没错,多态在程序中的表现形式就是依赖于继承多态性那多态到... 查看详情

面向对象之多态

1.多态   a:要有继承关系。   b:要有方法重写。   c:要有父类引用指向子类对象。2.多态的几种运行规则a:成员变量:编译看左边运行看左边:Animalt=newOne();System.out.println(t.c);编译看父类有没有空参方... 查看详情

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

1.多态性的理解:可以理解为一个事物的多种形态。2.何为多态性:对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)举例:Personp=newMan();Objectobj=newDate();3.多态性的使用:虚拟方法调用  >有了对象... 查看详情

面向对象之多态多态性(day7)

一、多态多态指的是一类事物有多种形态1、动物有多种形态:人,狗,猪importabcclassAnimal(metaclass=abc.ABCMeta):#同一类事物:动物@abc.abstractmethoddeftalk(self):passclassPeople(Animal):#动物的形态之一:人deftalk(self):print(‘sayhello‘)classDog(Animal) 查看详情

多态★★★★★(面向对象特征之三)

函数本身就具备多态性,某一种事物有不同的具体的体现。 体现:父类引用或者接口的引用指向了自己的子类对象。//Animala=newCat();多态的好处:提高了程序的扩展性。多态的弊端:当父类引用指向子类对象时,虽然提高了... 查看详情

面向对象之多态与多态性(代码片段)

一、多态  1、定义:指的是一类事物的多种形态,如水有液体、气体和固体三种形态, 动物有人、猫、狗等存在形态。  2、示例:#!/usr/bin/envpython3#-*-coding:utf-8-*-importabcclassAnimal(metaclass=abc.ABCMeta):#同一类事物@abc.abstract... 查看详情

java面向对象之多态

1.多态package com.yuanzijian02;public class PolyTest { public void run(Car car){ car.run(); } public static void main(String[] args) { //&n 查看详情