一、面向对象的概念
是一种编程思想。
举个例子:现在我手上接了一个500W的项目,接下来我需要完成这个项目,现在我有两个选择:第一是自己一人开发;第二是组建团队或者说外包
第一,自己一个人独立开发:那么我需要做的事情可能就包括了:需求搜集、分析,原型设计,项目架构设计,编码实现,项目测试,项目实施等等。其中每一件事情都必须亲力亲为,感觉心里倒也踏实,不过这个过程非常辛苦,耗时也很长。
第二,组建团队开发:有了自己的团队之后,就可以不用再陪客户喝茶、聊天、吃饭、睡觉(售前售后);不用再排异常、找bug、调网络(攻城狮);不用再反复修改设计方案版本(射鸡湿)。那么我现在做的就是管理好我的团队,分配好任务,控制项目进度等,在整个过程中充当指挥者的角色。
上面的两个事例第一种是面向过程的做事方式,第二种是面向对象的做事方式。通过这样的事例从面向对象某一些方面的特征来简单的让大家有一个认识而已,更多的内容需要通过后面章节来逐步了解、加深。
二、类和对象
1. 类:是指描述一类事物,或者看成是一个分类,例如人类
2. 对象:是指具体的个体(也叫实例-instance),例如马云。
3. 在java中的运用:java语言设计的思想,希望将现实生活中,对象与对象之间的关系在计算机系统得以体现。构建计算机系统, 用的对象
三、语言设计
现实世界中,随处可见的一个事物就是对象,对象是事物存在的实体,如人类、书桌、计算机、高楼大厦等。人类解决问题的方式总是将复杂的事物简单化,于是就会思考这些对象所属于的某一类事物都是由哪些部分组成的。
通常都会将对象划分为两个部分,即动态部分【行为】与静态部分[描述]。
①静态部分:顾名思义就是不能动的部分,这个部分被称为“属性”,任何对象都会具备其自身属性,如一个人,它包括高矮、胖瘦、性别、年龄等属性。
②动态部分:具有这些属性的人会执行哪些动作也是一个值得探讨的部分,这个人可以哭泣、微笑、说话、行走,这些是这个人具备的行为(动态部分)
语法示例:
class Student{//描述了学生这一类的事物
String name;//静态属性【成员变量 可以不用初始化值】数据描述 姓名
int age;//静态属性 年龄
void eat(){//动态行为:可以完成一定的事情,做一定的功能
}
}
规范的语法:
1.类名首字符大写; Student
2.类名必须具有意义;
3.必须写注释;
四、创建对象
1.定义对象的语法:student stu= new student();//new student的复印操作,stu相当于一个副本[student类型,stu变量]
//填写信息
stu.name=”张三”;
stu.age=18;
stu.eat();
复制一份信息然后填写就是一个具体的对象
注意:就是new Student();复印的操作,stu相当于一个副本
class Student{//描述了一类事物,是不具体的,也是数据类型 Student这种类型【模板】
类是一种类型,这里的Student也一种类型,它是引用类型
2.堆栈内存图分析代码
1.简化了:创建对象的代码流程【先有类,再有对象】
2.堆栈分析:
画堆栈的目的:看到引用数据怎么引用
栈:但凡是变量都在栈中
堆:但凡new出来的都在堆中
五、构造方法
- 什么是构造方法
构造方法也是一种方法:
1.构造方法的名字与类名一致
2. 构造方法也可以有修饰符
3. 构造方法是可以有形式参数的[方法名+参数列表]
2.构造方法是有返回值的【对象】
1.一个类中,可自定义多个构造方法
2.构造方法没有普通方法中那个返回值的位置
3.构造方法的特点及作用
1.构造方法的特点:
1.任何一个类:必然存在一个构造方法的
2.一个类,若未显示的写出构造方法,存在一个隐式的无参的构造方法
3.一个类,若显示的写出构造方法,则隐式的构造方法不再存在
2.构造方法的作用:
1.创建对象
2.创建并初始化对象:通过构造方法给对象的属性赋值
4.目前:构造方法的使用方式,通过new来调用
5.构造方法的注意事项
1.普通方法可以名字和类名一致,但不推荐这样,容易混淆
2.构造方法的调用方式和普通方法使用不一样[new]
3.不小心把Student 写成小写 student;编译器会认为你写的是普通方法