面向对象(OOP)
1.什么是面向对象
实际开发过程中,我们总是通过对象帮助我们解决问题,所以面对对象的核心本质:
找到合适的对象,帮助我们完成具体的业务.
找到合适的对象----->分析业务
搞一个合适的对象出来------->完成业务
Java在编写业务时候,采用的方式:通过对象解决
.
对象就是一个个能够帮助我们解决问题的实体.Java中引用类型就是对象实例
-
对象是什么?
类:分类/类型/类别/人类/鸟类.抽象的名字.对于具备相同外形的、相同功能的一类事物的统称。类就是对于对象的抽象(抽取对象像的部分)。
对象:啄木鸟、黄鹂鸟等等这些就是对象。对象就是类的具象化表现形式。是能够真正帮助我们做事的。
1.1面向对象和过程的异同:
相同点:都是一种思想,思维方式,思考问题的角度.都是对软件分析设计和开发的一种思想
- 面向过程:"关注我该如何实现?"分析步骤,然后一步步实现;
- 面向对象:“关注我该找谁实现” 这个’谁’就是对象,而对象如何实现不关注;
面向对象分别为面向对象分析(OOA)、面向对象设计(OOD)和面向对象编程
(OOP)(object-oriented Analysis Design Programming )
项目 | 面向过程procedure-oriented | 面向对象object-oriented |
---|---|---|
区别 | 事物比较简单,可用线性思维去解决 | 事物比较复杂,用简单线性思维无法解决 |
共同点 | 解决实际问题的一种思维方式 | 解决实际问题的一种思维方式,都是代码组织的方式 |
共同点 | 二者相辅相成,并不对立,具体到微观操作,仍然要用面向过程的方式来处理 | 解决复杂问题,通过面向对象,能从宏观上把握事物之间负责的关系,方便分析整个系统; |
1.2优点
- 将复杂的问题简单化
- 更符合生活中人们思考问题的角度
- 面向过程更贴合执行者的思维方式,面向对象更贴合管理者的思维方式
2类与对象的概念
2.1面向对象思维方式进行编程:
为了将程序和现实生活紧密联系,提出2个概念:
-
类:一系列对象的共性---->图纸|模板
-
对象:用来描述现实生活中真实存在的事物------>实例
先定义类,然后根据类创建对象
对象和类的关系
- 特殊到一般,具体到抽象
- 类可看成一类对象的模板,对象可看成该类的一个具体实例.
- 类描述同一类对象的一个抽象概念,类中定义这一类对象具有的静态动态属性
- JDK有提供很多类,编程人员也可定义自己的类
2.2如何自定义类:
自定义类
定义类(类的组成)
-
属性 field
-
**定义该类或该类对象包含的数据(静态特征),**作用范围是整个类体.
-
属性定义格式
//[修饰符] 属性类型 属性名 = [默认值]; public class Person{ String name = "张三"; int age = 18; boolean gender = false; }
-
-
方法 (功能) method
-
方法用于定义该类或者该类实例的行为特征和功能实现,方法是从属于类和对象的.
-
方法定义格式
public class Person{ //成员变量 String name; //成员方法 public void study(){ System.out.pringln("一个人正在学习...") } }
-
-
构造器 constructor
package com.shyjx.oobtest; public class Student { //属性(成员变量) int age; String name; boolean gender; //方法 void study(){ String i = gender?"男":"女"; System.out.println("一个"+age+"岁的"+i+"学生"+name+"正在学习..."); } //构造方法,是空构造器 Student(){ } }
//测试类 package com.shyjx.oobtest; //同包下的类不需要导包 public class Stud_Test { public static void main(String[] args) { Student st = new Student();//创建引用对象 st.name = "卡卡";//使用功能 st.age = 38; st.gender = true; st.study(); } }
-
else:局部代码块|普通语句块 静态块 成员代码块|构造块 同步块 内部类
-
测试类
-
1.导包 : 指定要使用的类型的位置 不需要导包的类 : 1.java.lang包下的类 2.同包下的类 2.创建引用类型的对象 : new关键字就是创建对象使用的 引用数据类型 引用名|变量名 = new 引用数据类型(); 3.使用对象的属性|功能 引用.属性名字 引用.功能名字(实参) 注意 : 成员(成员变量|成员方法)是属于对象的,需要跟随对象进行属性 成员变量只声明不赋值存在默认值 整数:0 小数:0.0 布尔 : false 字符:空字符 引用:null 注意 : 方法的返回值类型可以任意类型,包括自定义的引用数据类型(实体类型) 注意 : 方法的形参的数据类型可以为自定义的引用数据类型(实体类)
-
-
工具类
-
实体类|javabean|模板类|图纸类
成员变量