面向对象
案例引入:五子棋
1、面向过程:将事务按照一定的步骤实现。通过函数的方式执行步骤。
1)、开始游戏
2)、执黑先行
3)、绘制棋盘
3)、判定输赢
、、、、
游戏结束
(类似于蛋炒饭)
2、面向对象:把构成事务划分成一个个对象来处理。
1)、游戏用户
2)、棋盘对象
3)、规则对象
(类似于盖浇饭)
3、优缺点
1)、面向过程:效率高(如果使用面向对象的方式来开发,会创建对象,开销较大)、可维护性比较低 。
eg:单片机、嵌入式开发、Linux操作系统
2)面向对象:效率低、可维护性比较高(耦合度低)
eg:应用系统
二、面向对象
1、类
类是抽象的,是用来描述事物的。
2、对象
对象是具象的,是实际用来干活的,也是类的一个实例。对象占内存,类不占内存。
属性:静态的(固有特征)。
行为:动态的(方法)
3、类和对象之间的关系
类是对象的描述,对象是类的实例。
4、类的结构
1)、成员属性
2)、成员方法
3)、构造器(构造方法)
5、面向对象的特征
1)、封装:将事物的内部细节隐藏起来,对外暴露访问接口。
2)、继承:子类可以拥有父类的属性和行为。好处:提高代码的复用性。
3)、多态:同一个动作作用于不同的对象产生的不同行为。
多态的类型:编译时多态和运行时多态。
三、Java程序执行流程
1)、将编写好的Java源程序(.java)通过编译器生成字节码文件(.class)
2)、通过JVM类加载器加载所有的字节码文件。
3)、加载完字节码文件后交给JVM执行引擎执行Java程序。
四.Java的内存结构
1)、方法区
存储类的信息(访问修饰符 全类名(包名+类名) 注解)
静态的成员的属性(static修饰的成员属性)
常量(static final修饰的成员属性)
静态方法(static修饰的成员方法)
成员方法
2)、堆
new 出来的的对象
数组、接口
3)、栈
局部变量
对象的引用
五、类
语法访问修饰符 +class+类名+{}(大括号叫作用域)
类的组成:
属性(又叫成员属性或成员变量) 访问修饰符+数据类型+属性名称public String name
分类:
普通成员变量: 存储在堆中
类变量 :随着类的加载而加载(static int age)存储在方法区
常量:static final country = “CHINA”;常量用大写 存在方法区的常量池中
方法
构造器
访问修饰符
public 公开的 在任何位置都可以访问
private 私有的 只有在当前类中可以访问
protected 受保护的 在同一个包中访问或者在派生类中访问
defaul 默认的 在同一个包中可以访问
成员方法
构造器
通过构造器构造对象
通过构造器可以初始化成员属性(给成员变量赋值)
可以重载
创建对象
语法:new 构造器;
流程:当通过new 构造器之后,会在对空间开辟一段内存,来保存这个实例,产生一个引用地址,将来
可以将引用地址交给在栈中声明的变量。
局部变量和成员变量
作用域不同
成员变量在类中声明,
局部变量是在方法内(方法体内或形参列表)
存储位置不同
成员变量存储在堆中
局部变量存储在栈中
赋值方式不同
成员变量都有默认值
局部变量没有默认值必须显示的赋值才能访问
六、封装
封装
1.概念:将类内部细节隐藏起来,对外可以提供访问的接口。
2.如何实现封装?
1).将成员属性声明为私有
2).增加setXXX()和getXXX()方法(类似于文件的读写属性)
3. this关键字
–用来区分成员变量和局部变量
–代表当前对象
4.构造器
1).构建对象
2)·初始化成员属性
3).构造器可以形成重载
4).与类同名,无返回值
5).所有类都有构造器
6).当类中没有显示的构造器是,实际上有一个隐藏的构造器
7).当类中有显示构造器时,会把隐藏的构造器覆盖