• Java 对象和类


              

    面向过程思想到面向对象思想的演变过程:

      在面向过程中,是以方法来进行组织代码的,然后方法之间的相互调用。这样场景在数据相对较少,方法相对较少的情况下,是没有问题的。但当应用程序庞大复杂时,一个根本完成不了,需要多人协作来进行开发时,这时就有问题了。

    别人在不清楚你所写的功能代码的情况下是很难上手的,因为我们是以方法来进行组织代码的,别人需要把整个流程熟悉后,才能进行在之前的基础上进行开发(别人需要把每一个方法内部的实现细节都要了解,才能进行修改,否则很有可能把之前程序的逻辑性打乱,从而引发BUG。比如,之前的逻辑是A方法中调用了B方法,但是经过修改之后,又调用了C方法,导致整个逻辑就出现了问题。)

    所以,以面向过程的思维进行大型开发时,程序的管理比较复杂,不易于程序的扩充;对于程序的可维护性比较低;

    但是,在C语言中,有一个结构体的特性,可以把每一类型的变量存放到每一个结构体中来进行管理。比如,把车相关的变量存放到车的结构体中,把行车导航仪的相关的变量存放到导航仪的变量中。当变量使用时,使用结构体.变量来调用对应的变量。方法也类似的操作,封装到一个个的结构体中。

    但是,这样还是存在缺陷的,比如,车相关的方法:启动的方法,需要调用启动相关的变量时,必须要调用封装启动变量的结构体,才能获取数据。在此基础上,就在思考,为什么不把车启动的变量和方法的数据封装到一起呢,这样明显更加具有条理性。

    于是,把每一类型的数据封装到一起,这时,类的概念就出现了(C++,在C语言的基础做了升级)。这个就是面向对象的思维;

    以类的方式组织代码后,之前1000个变量和1000个方法的代码结构就会变为n个类,这样管理程序的效率就能大大提高。同时,程序也变的更容易扩展。比如,在现在的功能之上,添加自动驾驶的功能时,只需要添加一个相关的类即可,原有的代码结构并不需要修改。其次,程序的开发分工更加合理,比如按照功能来进行分工,从而提高程序开发的效率;当出现人员变更时,新人只需要研究对应的功能即可,不需要把整个应用程序流程研究一遍才能上手,这样也大大降低程序的维护成本;

    在选择面向过程开发,还是面向对象开发时,是分应用场景的,如果程序的逻辑比较庞大复杂时,选择面向对象。如果代码比较少,逻辑比较简单时,选择面向过程即可,没必要去选择面向对象。

     

    面向过程思维和面向对象思维的对比

    举例:

    如何驾驶汽车?

    面向过程:                              面向对象:

    1、踩离合;                              1、驾驶员;

    2、挂挡;                                2、汽车;

    3、踩油门,放离合;                      3、驾驶员开汽车;

    4、车走了;

    面向过程属于线性思维,考虑的是第一步做什么,第二步做什么。。。。。,当事情比较简单时合适。但当事情变的复杂,需求他人的帮助下才能完成时,就需要面向对象的思维了。

    面向对象思维来思考事情该如何做时,首先考虑这件事情中,包含有哪些对象,比如,有驾驶员和汽车两个对象,把如何驾驶汽车的多个方法封装到汽车对象当中,汽车直接调用即可实现。所以,在面向对象当中,是包含着面向过程,是对面向过程的高级封装;

    面向过程:以事件为中心,强调的是做一件事的步骤;

    面向对象:以事物为中心,强调的是由谁来做;

    二者最终的目的一样,但方式不同;

    面向对象思想编程 总结:

    0)编程的本质:

    把现实中存在的逻辑,使用代码来实现;现实中逻辑,就是使用语言了进行表达的。

    1)面向对象编程(OOP)的本质:

    以类的方式组织代码,以对象的方式封装数据(以面向对象的思维组织代码,封装数据)。

    2)什么是对象:

    对象是具体的事物,一类事物具体的一个实例;

    举例:张三、李四就是人的对象;

    什么是类:

    是对对象的一种抽象(抽象,抽出像的部分),一类事物的一个抽象;

    举例:人、动物、汽车,都是类;

     

    在编程思想中,必须先定义类,才有对象,对象是java的核心;

    抽象的两个方面,也就是一个类包含的两个部分;

    1、静态属性------>成员变量;

    2、动态行为------>成员方法;

    每一个对象都有自己的属性,属性值一般和另一个对象的属性是不一样的。

    调用一个方法,必须先new一个对象,然后对这个对象来调用这个方法。针对不同对象调用的方法,它的作用域是不一样的。

    类是对象的模版,new出来的对象,都共享类的模版;

    3)面向对象也叫做面向类的编程:

    作为面向对象,在处理业务逻辑时,不应该先考虑第一步做什么,第二部做什么;

    考虑:

    1、在问题当中,有哪些类,哪些对象;

    2、在这些类和对象中,应该具有哪些属性和方法;

    3、类与类之间有怎么样的关系;

    技巧:找类的方法:名词,判断名词是类,还是属性;

    4)如何在内存中区别类和对象:

    类是静态的,在内存的代码区;

    对象是new出来的,在堆内存;

    5)对象的创建和使用:

    1、必须使用new关键字来创建对象;

    2、使用对象名(引用).成员变量来引用对象的成员变量;

    3、使用对象名(引用).方法(形参列表)来调用对象的方法;

    4、操作对象,就是操作它的地址,对象名(引用)就是地址;

    6)对象和类 总结:

    对象和类的关系:特殊到一般,具体到抽象;

    类:class;

    对象:Object(事务) , instance(实例) ;

    类可以看成一类对象的模版,对象可以看成该类的一个具体实例;

    类是用于描述同一类型的对象的一个抽象的概念,类中定义了这一类对象所应具有的静态和动态属性。

    对象是java程序的核心,在java程序中“万事万物皆对象”;

    JDK提供了很多类供编程人员使用,编程人员也可以自定义类;

    创建Java自定义类:

    步骤:

    1)定义类(考虑修饰符、类名)

    2)编写类的属性(考虑修饰符、属性类型、属性名、初始化值)

    3)编写类的方法(考虑修饰符、返回值类型、方法名、形参等)

    类的属性、类的方法:

    1)属性,field,属于成员变量;

    2)属性用于定义一个类或一个类的对象所包含的数据,或者说静态属性;

    3)属性的作用范围是整个类体;

    4)在定义成员变量时,可以对其进行初始化,如果不对其初始化,Java使用默认值对其初始化;

    5)属性定义格式:

    [修饰符] 属性类型 属性名 = [默认值];

    6)面向对象中,整个程序的基本单位是类,方法是从属于类的。

    7)java中方法参数传递是:值传递;

    类包含的元素:

    1)成员变量:描述对象的静态属性,分为静态成员变量、非静态成员变量;

    2)代码块:

    3)构造方法;

    4)成员方法:描述对象的动态行为,分为静态成员方法、非静态成员方法;

    5)内部类;

    构造方法:

    1)构造器:也叫构造方法,constructor;

    2)构造器的作用:(1)用于构造该类的实例(对象),(2)用来初始化对象的属性;

    3)语法格式:

    [修饰符] 类名(形参列表){

    代码块;

    4)构造器是一种特殊的方法:

    A ) 使用new + 构造方法,来创建一个类的新对象;

    B )  构造器虽然有返回值,但是不能定义返回类型(返回值的类型肯定是本类对象),不能在构造器里调用return;

    C ) 如果没有定义构造器,则编译器会自动定义一个无参的构造方法。如果已经定义则编译器不会添加;

    D ) 构造器的方法名必须和类名一致;

    E ) 构造方法可以有多个,构造方法的重载;

    F ) 最好同时定义无参和有参构造方法;

  • 相关阅读:
    在java中怎样获得当前日期时间
    java 常见异常
    线程中的current thread not owner异常错误
    hibernate 关于hbm.xml编写的总结
    java web 常见异常及解决办法
    初用Ajax
    JavaScript动态修改html组件form的action属性
    Ajax中文乱码的解决
    No repository found error in Installing ADT
    eclipse 安装 CDT
  • 原文地址:https://www.cnblogs.com/zhangze-lifetime/p/11597444.html
Copyright © 2020-2023  润新知