多态,抽象,接口,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

  • 13
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值