学习笔记——面向对象
1. 什么是面向对象
一种看待问题的思维方式,着眼于找到一个具有特殊功能的具体个体,然后委托这个个体去做某件事情,我们把这个 个体就叫做对象。 是一种更符合人类思考习惯的思想【懒人思想】,可以将复杂的事情简单化,将程序员从执行者转换成了指挥者 使用面向对象进行开发,先要去找具有所需功能的对象来用,如果该对象不存在,那么创建一个具有所需功能的对象
2. 面向过程
一种看待问题的思维方式,在思考问题的时候,着眼于问题是怎样一步一步解决的,然后亲力亲为的去解决问题的过程。
3. 面向对象与面向过程的对比
举例说明:
案例一:我想要吃宫保鸡丁
面向过程 面向对象
1.自己去买菜 1.委托一个会砍价的人帮忙去买菜
2.自己择菜 2.委托一个临时工帮忙择菜
3.自己做菜 3.委托一个厨师帮忙做菜
4.自己开始吃 4.自己开始吃
案例二:小明是一个电脑小白,想要配一台电脑,买完零件后需要运到家 里,组装完成后打开 电脑玩游戏
面向过程 面向对象
1.小明补充电脑知识 1.委托一个懂电脑的朋友去帮忙买零件
2.小明去买零件 2.委托一个能跑腿的人去买零件
3.小明把零件带回家里 3.委托一个快递小哥帮小明送到家里
4.小明组装电脑 4.委托一个会组装电脑的人帮小明组装电脑
4. 总结一下
a.都是看待问题的一种思维方式,都能解决问题
b.面向过程着眼于所有的事情按照步骤来实现
c.面向对象着眼于找到一个具有特殊功能的对象,委托这个对象去做某 件事情。
PS:面向对象是一种思想,并不是一门编程语言
5. 什么是类
一类具有相同属性和功能的实体的集合,类是Java语言的基本单位
6.什么是对象
在一个类中,一个具有特殊功能的实体,能够解决特定的问题,对象也被称为实例
7. 类与对象的关系
类是对象的抽象(模板),对象是类的具体体现(实例)
类是抽象的,不占用内存,而对象是具体的,占有内存空间。
8. 类的声明
语法: 访问权限修饰符 class 类名 {
//属性
//方法
}
说明:
a.访问权限修饰符:只能是public或省略不写
b.类名只要是一个合法的标识符即可,但是要求:首字母必须大写,遵循帕斯卡命名法
c.尽量使用单个或多个有意义的单词连接而成
public class Person{
}
public class Student{
}
9. 创建对象及内存分配
9.1 对象的创建
对象的创建过程也被称为对象的实例化过程
语法:类名 对象名 = new 类名();
调用属性:
对象名.属性名
调用方法:
对象名.方法名(实参);
//演示对象的创建,跨类进行调用成员方法以及访问成员变量
//测试类:含有main函数得类被称为测试类
public class TestPerson {
public static void main(String[] args) {
//1.创建对象
//语法:类名 变量名称 = new 类名();
Person xiaoMing = new Person();
//2.调用对象属性
//语法:对象.属性名
xiaoMing.name = "小明";
xiaoMing.age = 10;
xiaoMing.gender = '男';
//3.调用对象方法
//语法:对象.方法名()
xiaoMing.eat();
}
}
//实体类:表示具有某些特征或者某些行为的类
//描述多个对象所具有的共同特征和共同行为
//需求:人类,具有姓名,年龄,性别等的特征,可以吃东西,可以奔跑,,,,
class Person {
//第一部分
//成员变量:特征【名词】
//非静态成员变量
String name;//null
int age;//0
char gender;//\u0000
//第二部分
//成员方法:行为【动词】
//非静态成员方法
public void eat() {
System.out.println("eating~~~~");
}
}
9.2 对象内存分配***
程序运行时,操作系统会分配三块主要的内存空间
栈:直接存放基本类型数据,和引用类型的地址 栈空间比较小,存取速度相对较快 先进后出
堆:存放引用类型的实际数据部分 堆空间比较大,存取速度相对较慢
方法区:保存类的信息(包括类的名称、方法信息、字段信息);方法区中有一块空间叫串池 (常量池),用来存放字符串常量;另一块空间叫静态区用来存储静态数据。
在jdk1.7之后常量池、静态区作为堆中一部分,方法区的概念弱化