Java基础知识

如何理解Java的多态?其中,重载和重写有什么区别?

多态是同一个行为具有多个不同表现形式或形态的能力,多态是同一个接口,使用不同的实例而执行不同操作。多态就是程序运行期才确定,一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法。

多态存在的三个必要条件是:继承,重写,向上转型(需要将子类的引用赋值给父类对象,只有这样该引用才能具备调用父类的方法和子类的方法)

多态的三个实现方式:重写、接口、抽象类和抽象方法

继承链中对象方法的调用优先级:

1
2
3
4
this.show(O) -> super.show(o) -> this.show((super)O) -> super.show((super)O) 

当父类对象引用变量引用子类对象时,被引用对象的类型决定了调用谁的成员方法,
引用变量类型决定可调用的方法。如果子类中没有覆盖该方法,那么会去父类中寻找。
区别点 重载 Overload 重写 Override
参数类型 必须修改 不能修改
返回类型 可以修改 不能修改
异常 可以修改 可以减少或删除,一定不能抛出新的或者更广的异常
访问 可以修改 一定不能做严格的限制

面向对象编程四大特性及含义

  • 抽象:对现实世界的事物进行概括
  • 封装:将某事物的属性和行为包装到对象中,构成一个不可分割的实体,数据被保护在抽象数据类型的内部。只保留一些接口使之与外部发生联系。
  • 继承:子类继承父类,不仅可以有父类原有的方法和属性,也可以增加自己或者重写父类的方法及属性。
  • 多态:允许不同类的对象对同一消息作出的各自响应。

Object的equals()==的区别

equals():Object的公有方法,默认情况下是引用比较,不过有些类对其进行了重写,大部分是进行值比较

==:针对不同的类型,会有不同的比较方式

  • 基本类型:比较值是否相同
  • 引用类型:比较引用是否相同即内存地址是否相同

面向对象技术四大主题

  • 封装:把数据和行为封装到单个对象中,对象中既包含自身的数据以及行为,并且可以向其他对象隐藏自己的某些数据及行为。
  • 继承:子类继承父类,不仅可以有父类原有的方法和属性,也可以增加自己或者重写父类的方法及属性
  • 多态:相似的对象对相同的消息有着不同的响应。
  • 组合:使用其他对象来构建新对象