Java面向对象学习阶段总结(一)(面向过程和面向对象的对比,类,对象)

目录

前言

面向过程与面向对象

举例:打扫教室的卫生

对比小结

类和对象

对象(Object)

构造方法

成员变量和局部变量的区别


前言

        Java不同于C语言的面向过程编程,他是一门面向对象的编程语言。那么问题就来了,面向过程是什么?面向对象是什么?难道面向对象编程是要对着对象才能编程么,那单身狗怎么办(比如我)。所以当然不是这样的,下面让我们来认识一下这两种编程思想。

面向过程与面向对象

        面向过程(POP)这种编程思想最具代表性的语言自然就是经久不衰的---C语言。C语言一直都是一门热门的编程语言,除了能对地址操作,无条件相信程序员等特点,面向过程的思想也是它的一大特点。所谓面向过程,就是指对给定需要达到的目标先想好步骤,每一步该做什么,该怎么做,逐步实现的方式。

        面向对象(OOP)的编程语言之一---Java。Java语言近年来深受欢迎,而面向对象这种编程思想也是越来越多的人为之称赞。面向对象的思考方式旨在把一切东西都当作一个独立的对象,可以对这个对象进行操作,当要达成目标时,先思考目标的载体是什么,或者说,为了达成目标需要用到什么工具“桌子,椅子,地板,马路等等”,目标本身是什么“学生,房子,工人,猫,狗等等”,只要需要用到的,这些都是能成为对象的东西。

        我们可以通过一个对比来更好的理解两种编程思想

举例:打扫教室的卫生

面向过程:思考打扫教室卫生的步骤, 椅子放到桌子上 - > 扫地上垃圾 -> 拖地 -> 椅子放下来 -> 擦窗户 -> 擦桌椅

安排任务: 谁做什么

面向对象:思考打扫教室卫生有哪些任务:地面,桌椅,门窗

安排: 谁适合做对应的任务。 地面劳动强度大,派强壮的同学; 擦桌椅需要细心,派女生做;门窗比较高,派高个子同学

特点:找的人具备业务能力,不需要教他,安排下去基本就不用管,同时每个同学只需要负责属于他的任务。

        面向过程中的“谁做什么”就比如C语言的函数调用,需要什么功能就调用对应的函数

int main()
{
    putchar(getchar());
    putchar(getchar());
    putchar(getchar());
    putchar('\n');
}

putchar()函数输出字符,getchar()函数获取字符,每个函数完成一项功能。

        面向对象中的“各位同学”就是各个对象,他们有自己的属性:高,矮,男,女等等。根据不同的属性分配不同的负责任务,高个子同学打扫窗子,需要完成清洗,擦拭等在一项任务中不同的工作。

对比小结

面向过程:亲力亲为,侧重于分析和处理步骤

面向对象:所有的事情交给相应的对象(具备能力)去完成,侧重于分析完成任务需要哪些(什么样)对象

        通过对比我们可以发现,一个对象比一个函数做的事情要多,实现的功能更多。但就跟单个函数虽然功能单一却有很多个函数完成不同功能一样,对象同样也有很多个,那是什么来实现许多相似但不相同的对象呢?这就是类。

类和对象

具有相同的属性和行为的对象的集合,称为"一类"。类也可以称为模板。

        上文有提到因为“各位同学”有不同的属性所以分配不同的任务,但他们本质都是‘人’,所以可以归为一类,造成他们不同的叫做属性方法

        属性:描述对象的特征,在程序中,通过定义变量的形式表现属性。

        方法:方法就是用来完成解决某件事情或实现某个功能的办法。

        在程序中,使用关键字class来定义一个类,再在类中定义各种属性和方法

public class GuessNum {
    int initNum;
    int givenNum;
    void generateNum(){
        double random = Math.random();
        initNum = (int) (random * 100);

    }
}

GuessNum就是类名,initNum,givenNum是属性,GenerateNum()是一个方法。

对象(Object)

是类的一个实例化,是类的具体表现。将抽象的集合通过关键字new变成一个具体的实例,这个对象有类中的属性和方法,但具体的属性是什么每个对象是可以更改的,是不一样的。

GuessNum guessNum = new GuessNum();

构造方法

在类中有一个特殊的方法---构造方法

构造方法有如下特征:

  • 方法名跟类名相同

  • 没有返回值(连void都没有,没有返回类型)

  • 可以有参数,也可以没有参数

  • 如果一个类,没有写构造方法,默认提供一个无参数的构造方法

  • 一个类可以有多个构造方法,每个构造方法的参数个数可以不一样

  • 一旦一个类写了构造方法,默认的无参的构造方法不再生效

  • 构造方法不能通过对象直接调用,在实例化的时候自动调用

默认无参构造方法如下 :

    public Car() {
    }

   //空构造方法new对象
     Car car = new Car();

 有参构造方法如下:

//构造方法的作用给属性赋初始值
    public Car(String brand, String color, int seat) {
//        this代表当前对象
        this.brand = brand;
        this.color = color;
        this.seat = seat;
    }

  //有参数的构造方法new对象
   Car car1 = new Car("奔驰", "黑色", 5);

成员变量和局部变量的区别

成员变量:1.定义在类中的变量,称为成员变量。2.它跟数组元素一样,有默认, 所以成员变量可以不初始化直接使用。3.作用域是整个类。

局部变量:1.定义在方法中的变量,称为局部变量。2.局部变量没有默认值,所以必须要先初始化,再使用。3.局部的作用域在它所在的大括号内有效。

生命周期:对象被垃圾回收时,成员变量就消失 ;方法执行完成后,局部变量就消失 。

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值