类和对象
类与对象的初步认识
类就是一类对象的统称。对象就是这一类具体化的实例
面向对象的好处,将复杂的问题变得简单了,只要面对一个对象就可以
简而言之:
面向对象就是用代码(类)来描述客观世界的事物的一种方式,一个类主要包含事物的属性和行为。
static关键字
a)修饰属性,java静态属性和类相关,和具体的实例无关,换句话说,同一个类的不同实例共用一个静态属性。
被static修饰的变量,所有类共享,访问方式为 类名.属性
b)修饰方法,如果在任何方法上应用static关键字,此方法成为静态方法。
- 静态方法属于类,而不属于类的对象
- 可以直接调用静态方法,而无需创建类的实例
- 静态方法可以访问静态数据成员,并可以更改静态数据成员的值
注意事项1:
- 静态方法和实例无关,而是和类相关。
- 静态方法不能直接使用非静态数据成员或调用非静态数据成员(非静态数据成员和方法都是和实例相关的)
- this和super两个关键字不能在静态上下文中使用(this是当前实例的引用,super是当前实例父类实例的引用,也是和当前实例相
注意事项2:
- 我们曾经写的方法为了简单,都统一加上了static,但实际一个方法要不要带static,都需要根据具体情况来定。
- main方法为static方法
构造方法
构造方法是一种特殊的方法,使用关键字new实例化新对象时会被自动调用,用于完成初始化操作
new执行过程
- 为对象分配内存空间
- 调用对象的构造方法
语法规则 - 方法名必须与类名相同
- 构造方法没有返回类型声明
- 每一个类中至少存在一个构造方法(没有明确定义则系统自动生成一个无参定义)
总结
- 一个类可以产生无数个对象,类就是模板,对象就是具体的实例。
- 类中定义的属性,大概分为几类:类属性,对象属性。其中被static修饰数据属性为类属性static修饰的方法成为类方法,特点是不依赖于对象,我们只需要通过类名就可以调用其属性和方法。
- 静态代码块优先实例代码块执行,实例代码块优先构造函数执行
- this代表的是当前对象的引用,并不是当前对象。