Java_面向对象编程-1

目录

主要内容

学习目标

第一节 类和对象

1.1. 面向过程和面向对象

1.2. 理解类和对象

第二节 类和对象

2.1. 定义类和创建对象

2.1.1. 属性(field 成员变量)

2.1.2. 方法

2.2. 局部变量

第三节 构造方法及其重载

3.1. 构造方法

3.2.  对象数组

第四节 方法调用

4.1.  基本数据类型的方法调用

4.2. 引用数据类型的方法调用

4.3.  this

4.3.1. 对象创建的过程和this的本质

4.3.2. this最常的用法:


主要内容

  1. 面向过程和面向对象
  2. 类和对象
  3. 成员变量和成员方法
  4. 局部变量
  5. 构造方法及其重载
  6. 方法调用
  7. this

学习目标

节数

知识点

要求

第一节(类和对象)

面向过程和面向对象

理解

类和对象

理解

第二节(类和对象)

成员变量

掌握

成员方法

掌握

局部变量

掌握

第三节(构造方法)

构造方法及其重载

掌握

对象数组

了解

第四节(方法调用)

方法调用-基本数据类型形参

掌握

方法调用-引用数据类型形参

掌握

this关键字

理解

第一节 类和对象

1.1. 面向过程和面向对象

        面向过程和面向对象都是对软件分析、设计和开发的一种思想,它指导着人们以不同的方式去分析、设计和开发软件。

Java_面向对象编程-1

        早期先有面向过程思想,随着软件规模的扩大,问题复杂性的提高,面向过程的弊端越来越明显的显示出来,出现了面向对象思想并成为目前主流的方式。两者都贯穿于软件分析、设计和开发各个阶段,对应面向对象就分别称为面向对象分析(OOA)、面向对象设计(OOD)和面向对象编程(OOP)。C语言是一种典型的面向过程语言,Java是一种典型的面向对象语言。

示例1:开车和造车

        面向过程思想思考问题时,我们首先思考“怎么按步骤实现并将步骤对应成方法,一步一步,最终完成。 这个适合简单任务,不需要过多协作的情况下。比如,如何开车们很容易就列出实现步骤:

Java_面向对象编程-1

面向过程适合简单、不需要协作的事务,重点关注如何执行。

        但是当我们思考比较复杂的设计任务时,比如“如何造车,就会发现列出1234这样的步骤,是不可能的。那是因为,造车太复杂,需要很多协作才能完成。此时面向对象思想就应运而生了。

       面向对象(Oriented-Object)思想更契合人的思维模式。我们首先思考的是“怎么设计这个事物 比如思考造车,我们就会先思考“车怎么设计,而不是“怎么按步骤造车的问题”。这就是思维方式的转变。

比如,我们用面向对象思想思考“如何设计车”:

Java_面向对象编程-1

 天然的,我们就会从“车由什么组成”开始思考。发现,车由如下对象组成:

Java_面向对象编程-1

        为了便于协作,我们找轮胎厂完成制造轮胎的步骤,发动机厂完成制造发动机的步骤;这样,发现大家可以同时进行车的制造,最终进行组装,大大提高了效率。但是,具体到轮胎厂的一个流水线操作,仍然是有步骤的,还是离不开执行者、离不开面向过程思维!

       因此,面向对象可以帮助我们从宏观上把握、从整体上分析整个系统。 但是,具体到实现部分的微观操作(就是一个个方法),仍然需要面向过程的思路去处理。

       我们千万不要把面向过程和面向对象对立起来。他们是相辅相成的。面向对象离不开面向过程!

示例2:蛋炒饭和盖浇饭

        简单来说:用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭。所谓盖浇饭,就是在米饭上面浇上一份盖菜,你喜欢什么菜,你就浇上什么菜。我觉得这个比喻还是比较贴切的。

 

Java_面向对象编程-1 Java_面向对象编程-1

        蛋炒饭肯定是把米饭和鸡蛋混在一起炒匀。盖浇饭呢,则是把米饭和盖菜分别做好,你如果要一份红烧肉盖饭呢,就给你浇一份红烧肉;如果要一份青椒土豆盖浇饭,就给浇一份青椒土豆丝。

        蛋炒饭的好处是入味均匀,吃起来香。如果恰巧你不爱吃鸡蛋,只爱吃青菜的话,那么唯一的办法就是全部倒掉,重新做一份青菜炒饭了。盖浇饭就没这么多麻烦,你只需要把上面的盖菜拨掉,更换一份盖菜就可以了。盖浇饭的缺点是入味不均,可能没有蛋炒饭那么香。

        到底是蛋炒饭好还是盖浇饭好呢实这类问题都很难回答,非要比个上下高低的话,就必须设定一个场景,否则只能说是各有所长。那么从饭馆角度来讲的话,做盖浇饭显然比蛋炒饭更有优势,他可以组合出来任意多的组合,而且不会浪费。

        盖浇饭的好处就是“菜”“饭”分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是“可维护性”比较好,“饭” 和“菜”的耦合度比较低。蛋炒饭将“蛋”“饭”搅和在一起,想换“蛋”“饭”中任何一种都很困难,耦合度很高,以至于“可维护性”比较差。软件工程追求的目标之一就是可维护性。面向对象的好处之一就是显著的改善了软件系统的可维护性。

·面向对象和面向过程思想的总结

  1. 都是解决问题的思维方式,都是代码组织的方式。
  2. 面向过程是一种“执行者思维”,解决简单问题可以使用面向过程。
  3. 面向对象是一种“设计者思维”,解决复杂、需要协作的问题可以使用面向对象。
  4. 面向对象离不开面向过程:
    1. 宏观上:通过面向对象进行整体设计
    2. 微观上:执行和处理数据,仍然是面向过程。。

面向过程

面向对象

区别

事物比较简单,可以用线性的思维去解决

事物比较复杂,使用简单的线性思维无法解决

共同点

面向过程和面向对象都是解决实际问题的一种思维方式

二者相辅相成,并不是对立的。

解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间复杂的关系、方便我们分析整个系统;具体到微观操作,仍然使用面向过程方式来处理

1.2. 理解类和对象

        我们人认识世界,其实就是面向对象的(此对象可不是男女谈对象的彼对象呀) 。比如现在让大家认识一下“天使”这个新事物,天使大家没见过吧,怎么样认识呢好的办法就是,给你们面前摆4个天使,带翅膀的美女,让大家看,看完以后,即使我不说,大家下一次是不是就都认识天使了。

Java_面向对象编程-1

        但是,看完10个天使后,我们总要总结一下,什么样的东东才算天使使是无数的,总有没见过的!所以必须总结抽象,便于认识未知事物!总结的过程就是抽象的过程。小时候,我们学自然数时怎么定义的1,2,3,4…这样的数就叫做自然数。 通过抽象,我们发现天使有这样一下特征:

  1. 带翅膀(带翅膀不一定是天使,还可能是鸟人)
  2. 女孩(天使掉下来脸着地,也是天使!)
  3. 善良
  4. 头上有光环

        那么通过这4个具体的天使,我们进行抽象,抽象出了天使的特征,我们也可以归纳一个天使类。 通过这个过程,类就是对象的抽象。

        类可以看做是一个模版,或者图纸,系统根据类的定义来造出对象。我们要造一个汽车,怎么样造就是这个图纸,规定了汽车的详细信息,然后根据图纸将汽车造出来。

        类:我们叫做class。 对象:我们叫做Object,instance(实例)。以后我们说某个类的对象,某个类的实例。是一样的意思。

示例1:英雄联盟、王者荣耀中的类和对象

        英雄就是类,具体的英雄,盖伦、提莫是对象。

 

Java_面向对象编程-1

示例2:月饼模具和月饼

        月饼模具是类,使用月饼模具制作的一个个月饼就是对象

Java_面向对象编程-1

总结

  1. 类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
  2. 类是用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象所应具有的共同的属性、方法。

本节作业

  1. 理解面向过程和面向对象的异同
  2. 理解类和对象的关系

第二节 类和对象

2.1. 定义类和创建对象

        做了关于对象的很多介绍,终于进入代码编写阶段。本节中重点介绍类和对象的基本定义,属性和方法的基本使用方式。

2.1.1. 属性(field 成员变量)

        属性用于定义该类或该类对象包含的数据或者说静态特征。属性作用范围是整个类体。在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化

数据类型

默认值

整型

0

浮点型

0.0

字符型

‘u0000’

布尔型

false

所有引用类型

null

属性定义格式:

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

2.1.2. 方法

        方法用于定义该类或该类实例的行为特征和功能实现。方法是类和对象行为特征的抽象。方法很类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。面向对象中,整个程序的基本单位是类,方法是从属于类和对象的。

方法定义格式:

[修饰符]  方法返回值类型  方法名(形参列表) {

   // n条语句

}

【示例1】定义类,模拟人的行为:吃饭工作和休息

  • 面向对象分析OOA

   从张三、李四、王五中提取出共同内容,提取一个类,人Person,包含共同的内容

   静态的特征:姓名、年龄、性别、住址

   动态的行为:eat、rest、work

  •  面向对象设计OOD  Design

    类:Person

    对象:zhangsan、lisi

    让对象完成功能 

  •  面向对象编程OOP  Programming

 【示例2】模拟实现具体人的特征和行为

来源:烟火9092

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年8月21日
下一篇 2021年8月21日

相关推荐