java学习 十五、面向对象

来源:互联网 发布:淘宝乐高军事玩具大全 编辑:程序博客网 时间:2024/05/21 07:59

一、概念:

    面向对象是一种概念,是一种设计模式。

    有人说面向对象指一切看得见的、看不见的、有形的、无形的,比如飞机、汽车、气体、固体、动物、植物等等,总之一切皆对象。我个人认为这句话描述的太过于笼统,不好理解,在我看来,他说的飞机、汽车、气体、固体、动物、植物这些都是类,不是对象,那么对象时什么呢?对象就是我们上面说的,那些类的具体的某一个实例,这个实例就是一个对象,比如汽车,汽车是一个类,但是你家里面的那辆XXX汽车就是一个对象。所以我认为对象的定义应该是这样的:某一类事物中的某一个具体的事物就是对象。

二、特性

    在java中,面向对象有三大特性,分别是:继承、多态、封装

    1)继承:

        在定义一个类的时候我们可以在某个已经存在的类上来进行,把这个已经存在的类所定义的内容作为自己的内容,并可以加入若干新的内容或者修改原来的内容,这就是继承,继承是子类自动共享父类资源的机制,这是类之间的一种关系,提高了软件的可重用性和可扩展性。如下图所示:

   在上图中,哺乳动物和鸟继承了动物,所以有了所有动物的方法,猫和狗继承了哺乳动物,所以有了所有哺乳动物的方法,鹰和麻雀继承了鸟,所以有了所有鸟的方法

    2) 多态:

        定义:多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法或属性调用在编程时不确定,而在运行期间才确定。

        多态必须有的三大特征:子类继承父类,子类覆盖父类(这里的覆盖包括属性和方法,所以不能单纯的看做是重写),父类引用指向子类对象。

        如下图中的,哺乳动物有个属性腿=4;而继承它的鲸鱼覆盖了这个属性,当我们在使用一个哺乳动物的引用对象去引用一个鲸鱼的实例并去调用腿这个属性的时候,在编译过程中是无法知道我们调用的是哺乳动物的腿,还是子类鲸鱼的腿,只有在运行期间才能确定,这个哺乳动物的引用对象会去自动转型为鲸鱼,并调用鲸鱼的腿这个属性,这叫多态。(方法也是这样的)

        

        (在此说一下,有人认为重载也是多态,还将多态区分成了编译时多态和运行时多态,我个人认为是不正确的,多态是面向对象的3大属性之一,面向对象所针对的都应该是类级别的事,而重载是方法级别的,所以它根本不是多态)

    3) 封装:

        隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员。封装的基本要求是: 把所有的属性私有化,对每个属性提供getter和setter方法。封装的基本实现如下图所示:

        

0 0
原创粉丝点击