一、类和对象
1.1 面向对象和面向过程
面向过程和面向对象都是对软件分析、设计和开发的一种思想,它指导着人们以不同的方式去分析、设计和开发软件。
面向过程思想思考“如何开车”:
面向过程思想思考问题时,我们首先思考“怎么按步骤实现并将步骤对应成方法,一步一步,最终完成。 这个适合简单任务,不需要过多协作的情况下。比如,如何开车们很容易就列出实现步骤:
但是当我们思考比较复杂的设计任务时,比如“如何造车,就会发现列出1234这样的步骤,是不可能的。那是因为,造车太复杂,需要很多协作才能完成。此时面向对象思想就应运而生了。
面向对象(Oriented-Object)思想更契合人的思维模式。我们首先思考的是“怎么设计这个事物/strong>” 比如思考造汽车,我们就会先思考“车怎么设计,而不是“怎么按步骤造车的问题”。这就是思维方式的转变。
面向对象思想思考“如何设计车”:
总结:我们千万不要把面向过程和面向对象对立起来。他们是相辅相成的。面向对象离不开面向过程!
示例2:蛋炒饭和盖浇饭
简单来说:用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭。所谓盖浇饭,就是在米饭上面浇上一份盖菜,你喜欢什么菜,你就浇上什么菜。我个人觉得这个比喻还是比较贴切的。
面向对象和面向过程思想的总结:
1.== 都是解决问题的思维方式,都是代码组织的方式==。
2. 面向过程是一种“执行者思维”,解决简单问题可以使用面向过程。
3. 面向对象是一种“设计者思维”,解决复杂、需要协作的问题可以使用面向对象。
4. 面向对象离不开面向过程:
宏观上:通过面向对象进行整体设计。
微观上:执行和处理数据,仍然是面向过程。
面向过程 | 面向对象 | |
---|---|---|
区别 | 事物比较简单,可以用线性的思维去解决 | 事物比较复杂,使用简单的线性思维无法解决 |
共同点 | 1.面向过程和面向对象都是解决实际问题的一种思维方式 2.二者相辅相成,并不是对立的。解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间复杂的关系、方便我们分析整个系统;具体到微观操作,仍然使用面向过程方式来处理 |
1.2 类和对象
类可以看做是一个模版,或者图纸,系统根据类的定义来造出对象。我们要造一个汽车,怎么样造就是这个图纸,规定了汽车的详细信息,然后根据图纸将汽车造出来。
类:我们叫做class。 对象:我们叫做Object,instance(实例)。以后我们说某个类的对象,某个类的实例。是一样的意思。
总结:
- 类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
- 类是用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象所应具有的共同的属性、方法。
二、类和对象
2.1 定义类和创建对象
属性(field 成员变量)
属性用于定义该类或该类对象包含的数据或者说静态特征。属性作用范围是整个类体。在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。
[修饰符] 属性类型 属性名 = [默认值] ; |
---|
方法
方法用于定义该类或该类实例的行为特征和功能实现。 方法是类和对象行为特征的抽象。方法很类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。面向对象中,整个程序的基本单位是类,方法是从属于类和对象的。
方法定义格式:
[修饰符] 方法返回值类型 方法名(形参列表) {n条语句} |
---|
void代表没有返回值;方法的作用:重用代码,封装功能,便于修改。
【示例1】定义类,模拟人的行为:吃饭工作和休息
-
面向对象分析OOA
从张三、李四、王五中提取出共同内容,提取一个类,人Person,包含共同的内容
静态的特征:姓名、年龄、性别、住址
动态的行为:eat、rest、work -
面向对象设计OOD Design
类:Person
对象:zhangsan、lisi
让对象完成功能 -
面向对象编程OOP Programming
【示例2】模拟实现具体人的特征和行为
总结1:如何创建对象
Scanner input = new Scanner(System.in);//键盘输入
Person person1 = new Person();//创建对象
new 后面是构造方法
总结2:如何操作属性:对象名.属性名
person1.name=“zhangsan”;
person1.age = 23;
总结3:如何调用方法: 对象名.方法名(实参列表)
person1.eat();
person1.work();
person1.rest(“宿舍”);
总结4:内存分配图
2.2局部变量
类中定义的变量是成员变量,而方法中定义的变量,包括方法的参数,代码块中定义的变量被称为局部变量。两个的区别主要表现在以下几方面:
代码执行的内存分配图如下:
三、 构造方法及其重载
3.1 构造方法
对于一个类来说,一般有***三种常见的成员:属性field、方法method、构造器constructor***。这三种成员都可以定义零个或多个。
构造方法(constructor)也叫构造器,用于对象的初始化。构造器是一个创建对象时被自动调用的特殊方法,目的是对象的初始化。构造器的名称应与类的名称一致。Java通过new关键字来调用构造器,从而返回该类的实例,是一种特殊的方法。
声明格式:
[修饰符] 类名(形参列表){ n条语句} |
---|
构造器4个要点:
- 构造器的方法名必须和类名一致!
- 构造器通过new关键字调用!
- 构造器虽然有返回值,但是不能定义返回值类型(返回值的类型肯定是本类),不能在构造器里使用return返回某个值。
- 如果我们没有定义构造器,则编译器会自动定义一个无参的构造方法。如果已定义则编译器不会自动添加!构造方法也是方法,只不过有特殊的作用而已。与普通方法一样,构造方法也可以重载。
【示例4】定义计算机类并模拟其操作
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!