1.Java的四个基本特性(抽象、封装、继承、多态),对多态的理解(多态的实现方式)以及在项目中哪些地方用到多态?
Java的四个基本特性
抽象:抽象就是将具有一致属性和行为的对象抽象成一个类,只强调本质的属性和行为,先不考虑具体的细节。
继承:继承是从已有类得到继承信息创建新类的过程。子类自动共享父类的属性和行为。单继承是指子类只继承一个父类的属性和行为,多重继承是子类可以继承多个类的属性和行为。
封装:封装是将属性私有化,提供公有的方法访问私有的属性。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可以隐藏的东西,只向外界提供最简单的编程接口。
面向对象的本质是以类的形式组织代码,以对象的方式组织(封装)数据。
多态:多态性是指允许不同子类型的对象对同一消息作出不同的相应。(相同的函数作用在不同的对象上会获得不同的结果)
多态的理解(多态的实现方式)
方法重载(overload)实现的是编译时的多态性(也称为前绑定)。
方法重写(override)实现的是运行时的多态性(也称为后绑定)。运行时的多态是面向对象最精髓的东西。
要实现
多态需要做两件事:1)方法重写(子类继承父类并重写父类中已有的或抽象的方法);2)对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)
项目中对多态的应用
简单的例子,在物流管理系统中,有两种用户:订购客户和卖方客户,两个客户都可以登录系统,他们有相同的方法Login,但登录之后他们会进入不同的页面,也就是在登录的时候会有不同的操作,两种客户都继承父类的Login方法,但对于不同的对象,拥有不同的操作。
2.面向对象和面向过程的区别?用面向过程可以实现面向对象吗?
面向对象和面向过程的区别
面向过程是一种以“事件”为中心的编程思想。就是分析出解决问题所需的步骤,然后用函数把这些步骤实现,并按顺序调用。面向对象是以“对象”为中心的编程的思想。
用面向过程不能实现面向对象。
3.重载和重写,如何确定调用哪个函数
重载:重载发生在同一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载。
重写:重写发生在子类和父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏替换原则)。
如何确定调用哪个函数
根据不同的子类对象确定调用的哪个方法。
4.面向对象开发的6个基本原则(单一职责、开放封闭、里氏替换、依赖倒置、合成聚合复用、接口隔离),迪米特法则。在项目中用过哪些原则。
六个基本原则
单一职责:一个类只做它该做的事情(高内聚)。在面向对象中,如果只让一个类完成它该做的事,而不涉及与它无关的领域就是践行了高内聚的原则,这个类就只有单一职则。
开放封闭: