三大特征
java面向对象的三大特征:封装、继承、多态。
什么是面向对象
面向对象是和面向过程开发不同的开发思想。
面向过程
面向过程(Procedure Oriented)是一种以过程为中心的编程思想,是一种自顶而下的编程模式。
简单来说,面向过程的开发范式中,程序员需要把问题分解成一个一个步骤,每个步骤用函数实现,依次调用即可。这种方式的代码执行起来效率很高。
但是,面向过程同时存在着代码重用性低,扩展能力差,后期维护难度比较大等问题。
面向对象
而面向对象的开发范式中,程序员将问题分解成一个一个步骤,对每个步骤进行相应的抽象,形成对象,通过不同对象之间的调用,组合解决问题。
就是说,在进行面向对象进行编程的时候,要把属性、行为等封装成对象,然后基于这些对象及对象的能力进行业务逻辑的实现。比如:想要造一辆车,上来要先把车的各种属性定义出来,然后抽象成一个Car类。
面向对象的编程方法之所以更加受欢迎,是因为他更加符合人类的思维方式。这种方式编写出来的代码扩展性、可维护性都很高。
封装
Java中的封装是一种将数据(变量)和作用于数据(方法)的代码打包为一个单元的机制。在封装中,类的变量将对其他类隐藏,并且只能通过当前类的方法访问。
封装可以对类的内部进行改变而不影响整体结构,同时也保护来数据。对于外界而言,它的内部是隐藏的,暴露给外界的只是可以访问它的方法。
优点:
- 类的内部可以自由修改
- 对成员变量的控制更精确
- 隐藏信息,保护数据
- 减少耦合
继承
继承是指这样的一种能力:可以使用现有类的所有功能,又可以在不改写原有类的基础上实现功能的扩展。
在java中我们需要使用extends关键字,通过继承创建的类被称为子类、派生类,被继承的类被称为基类、父类、超类。
优点:
- 提高了代码的重复性
- 继承为多态的实现提供了可能性。
在java中只运行但继承,也就是一个类只能由一个父类。但一个类可以同时实现多个接口。
多态
多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。
父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或方法在父类及其各个子类中具有不同的含义。
也就是就是同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
这种多态是运行时的多态,这种多态想要实现就要满足下面几点:
- 要继承一个类
- 重写方法
- 父类引用指向子类的对象(父类类型 变量名=new 子类类型();)
还有中说法是说多态分为两种:运行时多态,编译时多态。
- 运行时多态指通过继承重写实现,只有在运行的时候才能知道具体的执行方法。
- 编译时多态指通过方法的重载实现,方法的重载在编译的时候就能知道方法具体是执行的那种。