首页 > 其他分享 >多态,抽象,接口,Object,Equals

多态,抽象,接口,Object,Equals

时间:2024-08-04 11:26:27浏览次数:14  
标签:子类 Object 多态 接口 Equals 抽象 父类 方法

1.多态

1.1编译时多态:在编译时就能够确定调用哪个方法

​ 方法重载是编译时多态,在编译期根据参数的数据类型,个数以及次序来确定调用方法

1.2运行时多态:只有在运行时才能确定调用哪个方法,主要指动态绑定来实现,动态绑定是程序运行时确定调用 哪个方法的过程,他依赖于对象的实际类型而不是引用类型

​ 方法覆写:当父类对象引用子类实例方法时(父类声明,子类实例化)为运行时多态

​ 即父类引用指向子类对象

​ 通过父类创建的引用类型变量,保存了子类对象的内存地址

​ 父类 变量=new 子类();

1.3应用场景

​ 如果一个功能只对应一种实现,就不使用多态

​ 如果一个功能可能有多种实现,一定是多态

1.4优点

​ 低耦合,降低需求变动带来的代码变动风险

1.5缺点

​ 多态缺点:丢失子类特有的属性(父类没有子类有的属性)

1.6多态进行属性调用场景

​ 父子类都没有:报错

​ 父类有子类没有:父类

​ 父类子类都有:成员方法执行子类的,其他执行父类的\

​ 父类没有子类有:报错,丢失子类原有的属性

1.7Instanceof

​ 多态又叫向上转型 Animal a= new Cat();

​ 强制转换回子类类型,又叫向下转型 Cat c=(Cat) a;

​ 必须先发生向上转型,才能发生向下转型

​ a Inatanceof b:用于判断a是否由b实例化而来,可以有效降低向下转型的风险

2.抽象

2.1概念

​ 抽象:往往用来表示设计中得出的抽象概念,一般不会有具体的实体表示(动物类)

​ 比如动物,他只是一个抽象的概念,并没有一个具体的东西叫动物

​ 所以动物就不能代表一个具体的实体,就意味着动物类是不能创建对象的(没有意义)

​ 所以动物类应该定义为抽象类

​ abstract:修饰符,表示抽象的

​ abstract修饰类为抽象类,并且抽象类不能创建对象,但是依然有构造方法,用于用于子类创建对象时调用 (super())

​ abstract修饰的方法为抽象方法,抽象方法没有方法体,用于被子类实现

​ 抽象方法必须在抽象类中,而抽象类中不一定有抽象方法

image-20240801191249348

2.2注意事项

​ final 和 abstract不能同时修饰

​ 因为:final表示最终,不可修改,修饰的类不能被继承,修饰的成员方法不能被覆写

​ abstract表示抽象的,抽象的类和方法,就是用于被继承,被子类实现覆写的

3.接口

3.1是什么

image-20240801191759537

​ 面向接口编程

​ 接口是解决java中单继承导致功能变弱的问题,类和接口可以多实现,类与类只能单继承

​ 一个类只能继承一个类,但是可以实现很多接口

​ 使用接口,也是可以发生多态的

​ 接口可以看做特殊的抽象类,完全抽象,接口里的所有方法都是抽象方法

​ 接口中没有变量,只有常量public static final,并且psf可以省略

​ 1.8之前,接口中没有其他方法,只有抽象方法和常量

​ 1.8开始新特性,接口中可以出现default方法和静态方法

​ 由定义类关键字class改为interface

3.2优点

​ 跟多态的优点相同,降低耦合度

3.3怎么用

​ 类和类是单继承 extends

​ 类和接口之间多实现 implements,用多个逗号隔开

​ 接口和接口之间多继承,多个逗号隔开

​ 继承和实现,可以同时存在,先继承,后实现

​ 一个类实现接口后,需要实现所有的抽象方法

​ 一个抽象类实现接口后,可以实现0到n个抽象方法

​ 接口不能创建对象,并且没有构造方法

​ 通过接口名.静态方法()调用静态方法

image-20240801201709631

3.4接口和抽象类的区别

​ 如果某个功能通过抽象类和接口都能完成,优先使用接口

​ 因为类和类是单继承,而类和接口是多实现

​ 我们使用接口的话,会保留类继承,扩展性更强

4.Object

​ Object是java提供的根类,所有类都直接或间接继承Object

​ Object中的方法是所有类都有的

​ Object b = new xxx() 可以发生多态

4.1toString

image-20240801202132694

image-20240801202326458

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

image-20240801202359406

image-20240801202600335

image-20240801202609334

4.2Equals

image-20240801202749941

image-20240801202900654

image-20240801203050945

4.3Finalize

image-20240801203551463

Na1I-1722517277528)]

[外链图片转存中…(img-x5wT014m-1722517277528)]

[外链图片转存中…(img-yRkfh0cD-1722517277528)]

4.3Finalize

[外链图片转存中…(img-1Lh9X3RJ-1722517277529)]

image-20240801203636117

标签:子类,Object,多态,接口,Equals,抽象,父类,方法
From: https://blog.csdn.net/yanmoumou_/article/details/140857355

相关文章

  • TypeError: ‘float’ object is not iterable 深度解析
    TypeError:‘float’objectisnotiterable深度解析与实战指南在Python编程中,TypeError:'float'objectisnotiterable是一个常见的错误,通常发生在尝试对浮点数(float)进行迭代操作时。这个错误表明代码中存在类型使用不当的问题,因为浮点数不是可迭代对象。本文将深入......
  • TypeError: ‘dict’ object is not callable 深度解析
    TypeError:‘dict’objectisnotcallable深度解析在Python编程中,TypeError:'dict'objectisnotcallable是一个常见的错误,通常发生在尝试调用一个字典对象时。这个错误表明代码中存在逻辑错误,可能是将字典误用为函数或方法。本文将深入探讨这一错误的常见原因,并提......
  • 【C++】多态 - 含3个案例
    目录一、多态分类二、多态区别三、多态基本语法四、多态原理五、案例1:计算机类六、纯虚函数和抽象类七、案例2:制作饮品八、虚析构和纯虚析构九、案例3:电脑组装需求分析及实现多态是C++面向对象三大特性之一一、多态分类①静态多态:函数重载、运算符重载、复用函......
  • Objective-C学习笔记(协议和代理)
    协议协议是多个类共享的一个方法列。协议中列出的方法没有相应的实现,计划由其他人来实现。可以定义这些方法为必须实现的,也可以为可选择实现的@protocal协议名//在此处添加必须实现的协议方法@optional//在此处添加可选择实现的协议方法@end遵循协议也符合继承关系......
  • Android开发 - (适配器)ArrayObjectAdapter类与Presenter实现类关联的作用解析
    ListRowPresenterArrayObjectAdapteradapter=newArrayObjectAdapter(newListRowPresenter());用途:用于展示ListRow中的水平滚动列表项ImageCardViewPresenterArrayObjectAdapteradapter=newArrayObjectAdapter(newImageCardViewPresenter());用途:用于显示带......
  • 面向对象进阶:多态、内部类、常用API
    目录 Java中的接口Java中的内部类 常用APIStringBuilder类Java高级面向对象编程在这篇博客文章中,我们将探索Java中的高级面向对象编程概念,包括接口、内部类和常用API。每个概念都将通过代码示例来演示它们的应用。 Java中的接口 什么是接口?接口是Java中的一种引......
  • Android开发 - (适配器)Adapter类中ArrayObjectAdapter实现类详细解析
    简介用于AndroidTV的Leanback库,用于绑定对象数组到UI组件具体作用ArrayObjectAdapter是RecyclerView和Adapter系列中用于处理列表数据的一种适配器类型,主要用于AndroidTV的Leanback库中的BrowseFragment、DetailFragment和PlaybackOverlayFragment等......
  • 抽象和多态的关系
    接口和多态的关系多态性的基础:接口是实现多态性的关键机制之一。通过接口,不同的类可以实现相同的方法,但具体的实现可以各不相同。方法重载:多态性允许同一个方法名在不同的类中有不同的实现。接口定义了这些方法的统一签名,而实现类提供了具体的实现细节。动态绑定......
  • 多态
    目录多态的基本概念概念多态的定义与使用格式实例多态成员的特点实例多态中向上转型与向下转型实例多态的优点多态的基本概念概念多态是继封装、继承之后,面向对象的第三大特性。现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两......
  • Qt C++ 调用 Python 之 PyObject* 数据类型转换
    整数:PyLong_FromLong和PyLong_AsLong类型检查函数:PyLong_Check()intcppInt=42;//C++整数转换为Python整数对象PyObject*pyInt=PyLong_FromLong(cppInt);//Python整数对象转换为C++整数longcppIntFromPy=PyLong_AsLong(pyInt);Py_DECREF(pyInt)......