博美介绍

注册

 

发新话题 回复该主题

什么是面向对象上 [复制链接]

1#

前言

前面已经讲了Java的一些环境搭建、IDE使用、变量及数据类型、操作符、控制流程以及数组操作,今天就来看看Java里边的一个核心思想-面向对象编程。内容预告如下:

面向对象简介面向对象实例

面向对象

什么是面向对象?

所谓面向对象,是一种通过对象的方式,将现实中的事物映射到计算机模型的一种编程方法;

对象的含义指的是具体的某一个事物,即我们在现实生活中能够看得见摸得着的。在面向对象程序设计中,对象指的是计算机系统中的某一个成分,主要有两层含义。一个是指数据,另一个则是动作。即对象是两者的结合体,通过对象不仅能够进行操作,还能对操作的结果进行记录。

在这之前,另一种编程方式是面向过程,用一个具体的例子来讲,可以描述成下面这样:

将如有一天你很想吃酸菜鱼,那么你该怎么办呢?下面就以面向对象和面向过程给你两个选择,让你决定来选哪一个!

面向对象:打开手机,打开外卖软件,搜索酸菜鱼,然后下单,等着外卖送到家就行!面向过程:先去买菜,鱼、酸菜、调料……,然后回家杀鱼、切酸菜、切调料……,再接着开始炒,最后做好盛到盘子里!

对比可以发现两者的优缺点:

面向过程

优点:性能好;以例子来说自己做比起点外卖,经济又实惠,还吃得放心;缺点:不易维护、不易复用、不易扩展;以例子来讲,要是我们自己做,临时又想吃其他的菜,又得跑去买材料啥的,麻烦!但外卖就不一样了,直接打开手机再点就是!

面向对象

优点:易维护、易复用、易扩展,也就是面向过程的缺点;缺点:性能较差;比起自己做,点外卖成本啥的可能就比较高了;

面向对象的3大特性

封装

隐藏对象的属性和实现细节,对外只提供访问的接口,提高复用性和安全性;

继承

定义父类之后,子类可以从基础类进行继承,提高了代码的复用率,重要的一点:类只能单继承;

多态

父类或者接口定义的引用变量可以指向子类或具体实现类的实例对象,提高了程序的扩展性;

面向对象的5大原则

单一职责原则SRP

类的功能要单一,不能太复杂;

开放封闭原则OCP

一个模块对于扩展是开放的,对于修改则是封闭的,可以增加功能,但是修改功能却不行;

里氏替换原则LSP

子类能够替换父类出现在父类能够出现的任何地方;

依赖倒置原则DIP

高层次的模块不应该依赖于低层次的模块,而应该都依赖于抽象。抽象不应该依赖于具体实现,但具体实现应该依赖于抽象;

接口分离原则ISP

设计时采用多个与特定客户类相关的接口比采用一个通用接口要好;

面向对象的具体实例

类与对象

以我们日常生活为例,我们现在很多人都养宠物,而宠物都有一些共同状态,比如名字、毛色、年龄……这样一来我们就可以设计一个叫做类的东西,用来代表宠物这一类事物;

publicclassPet{//名字publicStringname;//毛色publicStringfurColor;//年龄publicintage;}

有了这个类之后,它就相当于我们的一个模板,根据这个模板我们就能够创建一个个具体的宠物,而这些宠物,就叫做对象;

publicclassPet{//名字publicStringname;//毛色publicStringfurColor;//年龄publicintage;publicstaticvoidmain(String[]args){//创建一个对象Petdog=newPet();dog.name="博美";dog.furColor="white";dog.age=1;Petcat=newPet();cat.name="英短";cat.furColor="orange";cat.age=2;}}

属性

每个宠物都有自己的名字、毛色和年龄等一系列状态,而这些状态就叫做一个类的属性。而属性的类型既可以是基本类型(比如上述例子中的int),也可以是引用类型(上述例子中的String)。而在Java语言中,属性的命名虽然没有强制规定,但是一般都是有一套大家通用的命名方法,即:

若属性是一个单词组成,那么一般都是小写;

若属性是多个单词组成,那么则采用驼峰法;

关于更多的命名规定,推荐参考阿里巴巴出品的《Java开发手册》,下载

分享 转发
TOP
发新话题 回复该主题