目录
面向过程
主导者始终是自己,且关注实现功能的每一步细节,更注重实现功能的过程
优点 :
对于简单的程序 ,面向过程的编程思想更加直接 效率更高
缺点 :
编程思想更倾向于计算机执行程序的方式
面向对象
更关注的是能实现功能的对象,只需要通过对象调用该功能实现程序逻辑即可
不关注实现的细节和过程
一切皆对象,万物皆对象
优点
只关注能实现功能的对象 不关注细节 符合人类思考问题的方式
缺点
在某些简单的场景下, 面向对象思想编程效率反而低一点
应用场景 :
复杂的业务场景,更适合用面向对象的编程思想来进行开发,方便进行分工合作,开发效率更高
简单的业务场景,更适合用面向过程的编程思想开发,简答 直接 高效
类和对象
类
抽象的概念
对一类事务进行共有特征和行为方式的抽象
对象/实例
是类的具体化或者实例化
现有类先有对象?
对象->类
代码开发阶段
类->对象
定义类
[权限修饰符] class 类名{
特征;
行为;
}
特征(成员属性 Fail) : 变量
行为(成员方法) : 方法
创建类的对象 :
类名 对象名 = new 类名();
例如
Person p1 = new Person();
调用对象的属性和方法 :
格式 :
对象名.属性名
对象名.属性名 = 值
构造方法
又称为构造器
概念 :
方法名和类名相同,没有返回值部分
格式 :
权限修饰符 类名(){};
例如 :
public Person(){
System.out.println("Person 的无参构造");
};
注意
1*每个类都有构造方法,编译器在编译时会检查类中有没有显示定义构造方法,如果没有,则编译器会自动生成无参构造器,
如果类中自定义类构造器,则不再提供默认的无参构造;
2*创建对象是就是通过调用类的构造方法来完成的
3*有参构造通常用于给对象的属性进行初始化赋值
4*构造方法是可以重载的
成员变量,局部变量
成员变量
定义在类中,方法外 表示类的属性特征
局部变量
定义在方法中,语句代码块中
成员变量和局部变量是可以同名的
如果访问在成员变量,局部变量的范围内,采用就近原则进行访问
成员变量和局部变量的区别
1*定义位置不同
2*作用域范围不同
成员变量:整个类
局部变量:方法内 语句代码块内
3*内存位置不同
成员变量 :
在堆中
局部变量 :
在栈中
4*生命周期不同
成员变量 :
随着对象的创建而创建 随着对象的消亡而消亡
局部变量 :
随着方法的执行而创建 随着方法执行结束释放空间而结束
this 关键字
this表示当前对象 动态的概念
应用场景
this.属性--获取当前对象的属性
this.属性 = 值 ----设置当前对象的属性值
this.方法 ---类中调用其他普通方法
this([参数]);--this语句 调用当前对象的其他构造方法
注意 :
this语句在构造方法中使用,只能放在构造方法的首行
this语句调用构造方法不能成环
构造代码块,局部代码块,静态代码块
构造代码块
初始化代码块
格式
{
代码块 ;
}
位置 :
类中方法外
执行 :
创建对象时 在构造方法前执行
每创建一个对象 构造代码块就执行一次
应用场景
所有构造方法中重复的代码可以提取到构造代码块中,从而提高了代码的复用性
成员属性进行初始化赋值
局部代码块
格式
{
代码块 ;
}
位置 :
方法或语句代码块中
执行 :
跟着方法一起执行
应用场景
如果希望局部代码块里的变量能够尽早释放空间,提高了空间利用率
静态代码块
面向对象的三大特征
封装 继承 多态
抽象
封装
概念 :
将一类事物共有的属性特征和行为方式通过类来体现
"透明"--无法得知内部的工作流程
理解 :
计算机 将所有硬件和软件程序封装在一个壳子里
可以在壳子的基础上使用
但是无法看到其中的构成 以及 运行流程
类是Java中的一等公民
体现 :
类
方法
问题引出 :
属性可以被修改 不安全
解决方案
私有化属性
private--私有
只能在本类中访问
提供public公开属性的get/set方法
优点 :
提高安全性
提高了程序的可维护性
封装是继承,多态的基础