6.类和对象
1. 面向对象与面向过程
1. 面向过程性能高于面向对象,因为类调用时需要实例化,对于内存的开销比较大,比较消耗性能,所以当优先考虑性能时,会选择面向过程的语言。
2. 面向对象具有封装、继承、多态三个特性。所以面向对象语言可以设计出低耦合的程序,而且程序易维护、易复用、易拓展。
2. 类和对象
类:一组具有相同属性、方法的对象的统称
对象:类的具体化表现
3.定义
- 定义类
public class Demo{}
- 声明对象
类名 对象名 = new 构造方法(参数值列表);
// 对象名.属性名
// 对象名.方法名(参数值列表)
4.NullPointerException
空指针异常:当引用类型的变量没有引用数据时,调用对象的属性和成员方法引发此异常
5. 成员变量和局部变量
- 成员变量(属性):类中所有成员变量都可以访问
- 局部变量:在方法中声明的变量、形参,在条件结构或循环中定义的变量
- 区别:
- 默认值:局部变量没有默认值,使用前必须赋值
- 作用域:局部变量必须在方法内或者结构循环语句内使用,全局变量可以在所有成员方法中使用
- 优先级:如果方法中有与全局变量重名的局部变量,优先调用局部变量
6. 构造方法
- 语法
// 构造方法语法 没有返回值类型 没有返回值类型 没有返回值类型
权限访问修饰符 类名 (参数列表){}
-
分类
- 隐式 -- 显式
- 有参 -- 无参
-
作用
创建对象时调用,并初始化属性值
7. 方法重载
- 同一个类中
- 方法名相同
- 参数列表不同
8. this关键词
- 可以在类,成员方法,构造方法中使用
- 在成员方法中可以调用成员变量和成员方法
- 在构造方法中可以调用成员变量、成员方法,this()可以调用同类其他构造方法
注意:this()在构造方法中必须放在第一行
注意事项:
1. 对象名中储存的是地址值
2. 系统默认提供一个公共无参构造,如果手动声明一个有参构造,默认的会被覆盖