Java面向对象详解---认识篇

认识篇:https://blog.csdn.net/Rao_Limon/article/details/80208853

进阶篇:https://blog.csdn.net/Rao_Limon/article/details/80322124

终极篇:https://blog.csdn.net/Rao_Limon/article/details/80358136



面向对象是一种思想,是基于面向过程而言的,就是说面向对象是将功能封装进对象之中,通过对象去实现具体的细节。

面向过程就是解决问题所需的整个步骤,通过函数将每个功能步骤分开,使用时依次调用。 

面向对象就是将处理业务的函数封装成各个对象,建立对象的目的是为了描叙该事物在整个解决问题的步骤中的行为。


就拿五子棋作为例子来说明:

    “面向过程”的设计思想就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、若无输赢则返回步骤2,否则进入第九步,9、输出最后结果。把上面的每个步骤用函数来处理逻辑业务,问题就解决了。

    “面向对象”的设计思想则是将整个五子棋分为:(1)、玩家系统,玩家棋子的行为一模一样;(2)、棋盘系统,负责绘制画面;(3)、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接收双方玩家的下子点,并传递给第二类对象(棋盘对象)显示出当前棋局的变化,之后利用第三类对象(规则系统)来对棋局进行判定。


       可以明显地看出,面向对象是以功能来划分问题的,而不是实现步骤。这是对数据一种优化,由于简化了过程,所以操作起来更加的方便。面向对象具有三大特征,分别是:封装性、继承性、多态性。


        ①、类     在现实生活中,相似对象之间往往都有一些共同的组成特征。例如燕子和鹦鹉都具有鸟类的特征,因此它们都被称为鸟类。“对象”这个词,也可以叫做“实例”,因为类是一个抽象的概念,而对象是实际存在的,所以我们可以说燕子是鸟类的一个实例。我们可以将类理解为所有相似对象共有的特征和行为

 

        ②、对象     对象在现实中是实际存在的物体,在程序中是类的一个实例。一个类中可以创建多个实例,该过程被称为对象的“实例化”。对象继承了类中的属性和方法,允许我们通过对象获取或修改属性值和调用函数处理数据。

 

        ③、封装性     封装是面向对象的特征之一,就是将对象共有的属性和方法封装在类中。通常,为了数据的安全性,一般会设置属性的访问权限为private,只有本类才能访问,其他的类和之类都无法访问。为了供外界访问,我们一般会提供对外的公共访问方法Getter和Setter方法。


        ④、继承性     面向对象的一个主要功能就是“继承”。继承是创建子类时,它获取了父类所有开放的属性和方法。它不但无需重新编写原来的类的所有属性、方法,还可以在此基础下进行扩展。子类中所有的构造函数都会默认使用super()方法指向父类的无参构造函数。

通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。


        ⑤、多态性     多态性,就是多种表现形式,具体来说,可以用“一个对外接口,多个内在实现方法”表示。指允许不同类的对象对同一消息做出响应。即同一消息可以根据对象的类型不同,而采用多种不同的行为方式。例如,在CS1.6中W键默认是向前走,而在LOL中W键是释放技能。相同的事件(按下W键)却在不同的对象类型中(CS1.6和LOL)发生了不同的行为,这就是所谓的多态性。多态的存在有三个前提:1、要有继承关系;2、子类要重写父类的方法;3、父类引用指向子类对象。


        ⑥、重载     重载是面向对象语言中一个很重要的特性,它能使一种方法能够处理不同情况。即一个类中可以有多个相同名称的方法,这些方法对应着不同的参数。每种同名但是不同参数的方法都可以处理不同的问题。

 

        ⑦、重写    重写也是面向对象语言中一个很重要的特性,在子类继承父类的情况下,子类写出一个和父类一模一样的方法,这就是子类的方法重写。重写的方法和父类的方法主要是方法体不同,当然也可以相同,但是这就没必要重写一个一模一样的,由于继承机制已经存在一模一样的方法和方法体,何必又要在子类中重新写一个一模一样的方法去覆盖父类呢?

 

        ⑧、构造函数     构造函数是一个特殊的函数,他和普通的函数不同,函数不能用它是专用用来初始化实例对象的,并且不能用返回值。所以,一个类中必须存在至少一个构造函数用于实例化对象。值得注意的是,和重写一样,构造函数也是存在重写的,分别初始化不同情况的实例对象。

面向对象的基本认识就介绍到这里了

------  END  ------

你可能感兴趣的:(Java,面向对象,java面向对象,封装,继承,多态)