首页 > 其他分享 >多态

多态

时间:2024-10-16 14:45:23浏览次数:4  
标签:重写 子类 多态 修饰 父类 方法

多态的概念;

当不同的对象完成是产生不同的状态

要实现多态的条件(1.向上转型   2.子类和父类有同名的覆盖/重写的方法  3.通过父类对象调用父类和子类重写的方法)

什么是向上转型

父类类型  对象名= new 子类类型

什么是重写

子类和父类的方法名一样,参数列表一样,返回值一样,可以使用@override来注解

注意事项:1.被final,static,private修饰的方法不能进行重写,

2.父类的访问修饰限定符一定要小于等于子类的访问修饰限定符

3.方法的返回值可以不相同但是必须是父子类关系

4.构造方法不能重写

什么是动态绑定?

(先向上转型,然后通过父类引用调用父类和子类重写的方法,调用子类的方法,运行时的过程就叫动态绑定)

什么是静态绑定?

在程序运行前就知道方法是属于哪个类,在编译是直接连接到那个类中

什么是向下转型

就是让父类调用子类独有的方法,子类类型 类名=(强制转换)父类类名,但是要加instanceof增加安全性

什么是多态

当引用的子类的对象不一样的时候,通过父类的引用调用重写的方法,

 

向上转型:

有3种方法

1.直接赋值

2.方法传参的方式(把父类的类名当作参数)

3.返回值(定义返回的类型最好是父类)

 2.子类和父类有同名的覆盖/重写的方法

方法的重写:子类和父类的方法名一样,参数列表一样,返回值一样

 

 

动态绑定

 

 

向下转型

 

 

多态

先把子类对象实例化,然后使用向上转型把父类的类型当作参数,调用重写的方法,最后在调用向上转型方法把子类要输出的东西放进去,从而达到想要输出的东西

 

抽象类

abstract修饰的类叫抽象类,抽象类不可以实例化,但是内部可以包含普通的成员方法和成员变量,抽象类只能用来被继承

当一个类含有抽象方法时,该类必须使用abstract修饰

abstract修饰的方法叫抽象方法,不能是private和static修饰的

final和abstract是不能同时存在的

抽象类里面的抽象方法可以不写代码块

 

标签:重写,子类,多态,修饰,父类,方法
From: https://www.cnblogs.com/hzy7/p/18458592

相关文章

  • Python入门-面相对象——class(类)、封装、继承、多态、类型注解
    面向对象面向对象就是设计一个类,基于类创建对象,并使用创建出来的类完成具体的工作面向对象的三大特性:封装、继承、多态面向对象基本概述:属性:名词,用来描述事物的外在特征的,例如:姓名,性别,年龄,身高,体重...行为:动词,表示事物能够做什么,例如:......
  • C++面向对象多态篇
    目录1.什么是多态?2.多态的概念3. 函数覆盖4.虚函数的定义5.多态实现6.多态的原理7.虚析构函数(掌握)8.类型转换8.1static_cast8.2dynamic_cast8.3const_cast(了解)8.4reinterpret_cast9、抽象类(掌握)10、纯虚析构函数(熟悉)11、私有析构函数(熟悉)1.什么......
  • 10.Python 对象(封装、继承、多态、类型注解)
    一、初始对象在程序中是可以做到和生活中那样,设计表格、生产表格、填写表格的组织形式的在程序中设计表格,称之为设计类(class)classStudent:name:None在程序中打印生产表格,称之为创建对象stu1=Student()stu2=Student()在程序中填写表格,称之为对象属性赋值......
  • Python面向对象编程:继承和多态③
    文章目录一、继承1.1什么是继承1.2定义父类和子类1.3子类重写父类的方法1.4多继承二、多态2.1什么是多态2.2多态的实现2.3抽象类和接口三、综合详细例子3.1项目结构3.2模块代码init.pyshape.pycircle.pyrectangle.py3.3主程序代码main.py3.4运行结果四......
  • DAY7 继承&多态
    继承 目的提高代码的重用性,减少一些重复代码的书写权限修饰符就是是用来限制类中的成员(成员变量、成员方法、构造器)能够被访问的范围。private只能本类缺省本类、同一个包中的类protected本类,同一个包中的类、子孙类中public任意位置特点单继承:Java是单继承模......
  • 一个月学会Java 第11天 面向对象——多态
    Day11面向对象——多态我们来复习一下面向对象的三大特性分别是什么,面向对象拥有的三大特性分别为继承、封装、多态。继承我们也已经学过了,就是父类和子类、封装其实也学过了其实就是访问修饰符和包,主要的作用为更好的封装我们接下来要讲的多态则是面向对象的最难点,他......
  • C/C++语言基础--C++神奇的多态
    本专栏目的更新C/C++的基础语法,包括C++的一些新特性前言通过前面几节课,我们学习了抽象、封装、继承相关的概念,接下来我们将讲解多态,多态他非常神奇,正式有了他,类才能出现多样性特征;C语言后面也会继续更新知识点,如内联汇编;欢迎收藏+关注,本人将会持续更新。文章目录......
  • 面向对象进阶-认识多态
    2024-10-10,今天的课程比较多,改了很多线下的事情,今天先对多态进行了认识。什么是多态?同类型的对象,表现出的不同形态。多态的表现形式?父类类型对象的名称=new子类对象();fuf=newzi();多态的前提?1.有继承关系 2.有父类引用指向子类对象 3.有方法重写多态的好......
  • 08 JAVA 继承多态抽象类接口
    1函数题1,super.a来明确访问父类的字段。super(a);表示调用父类的构造函数,并传递参数a2,抽象类继承需要写新的构造器,重写抽象方法classCircleextendsshape{privatedoubleradius;publicCircle(doubleradius){this.radius=radius;}//构......
  • PTA 作业三 继承与多态 JAVA 6-1 从抽象类shape类扩展出一个圆形类Circle 面向对象程
    6-1从抽象类shape类扩展出一个圆形类Circle分数25作者 张德慧单位 西安邮电大学请从下列的抽象类shape类扩展出一个圆形类Circle,这个类圆形的半径radius作为私有成员,类中应包含初始化半径的构造方法。publicabstractclassshape{//抽象类publicabstractdoubleg......