类与对象
类
类是对某类具有相同特征的对象的抽象概述,类是数据属性和其相关操作封装在一起的集合体,包括了对象的数据成员和成员方法(特征和行为)。,类是对象的模板和蓝图
Java程序中的类一般分为两种
- 系统定义的类:即Java类库,是系统定义好的类
编程时可以直接利用已有的Java类库,完成某些特定功能,无需自己从头编写,这样不仅可以提高编程效率,也可以保证软件质量,使用import语句可以引入系统类或系统类所在的包。 - 用户自己定义的类
[类修饰符] class 类名 [extends 父类名] [implements 接口列表] {
数据成员
成员方法
}
构造方法(constructor):是创建java对象的重要途径,通过new关键字调用构造方法时,后遭方法也确实返回了该类对象,但这个对象并不是完全由构造方法负责创建的
通过new关键字调用,若没有定义构造方法编译器会自动定义一个无参的构造函数,如果已经定义好则不会自动添加,构造方法名必须与类名相同
1.分配对象空间,并将对象成员变量初始化为0或null
2.执行属性值的显示初始化
3.执行构造方法
4.返回对象的地址给相关的变量
内部类(innerclasses):
- 一般情况下,我们把类定义成独立的单元,有些情况下,我们把一个类放在另一个类的内部定义,称为内部类
- 作用:
-
内部类提供了更好的封装,只能让外部类直接访问,不允许同一个包中的其他类直接访问
-
内部类可以直接访问外部类的私有属性,内部类被当成其外部类的成员。但外部类不能访问内部类的内部属性
- 内部类的使用场合:
由于内部类提供了更好的封装特性,并且可以很方便的访问外部类的属性,所以,通常内部类在只为所在外部类提供服务的情况下优先使用 - 内部类的分类:
- 成员内部类(可以使用private、proteted、public进行任意修饰。)
a.非静态内部类:外部类中使用非静态内部类和平时使用其他类没什么不同
i. 非静态内部类必须寄存在一个外部类对象里。如果有一个非静态内部类对象那么一定存在对应的外部类对象,非静态内部类对象单独属于外部类的某个对象
ii. 非静态内部类可以使用外部类的成员,但是外部类不能直接访问非静态内部类成员
iii.非静态内部类不能有静态方法、静态属性、静态初始化模块
iv.静态成员不能访问非静态成员:外部类的静态方法、静态代码块不能访问非静态内部类,包括不能使用非静态内部类定义变量、创建实例;
v.成员变量访问要点:
内部类里方法的局部变量:变量名
内部类属性:this.变量名
外部类属性:外部类名.this.变量名
vi.内部类的访问
外部类中定义内部类:new InnerClass()
外部类以外的地方使用非静态内部类:
Outer.inner varname = OuterObject.new Inner()
b.静态内部类
i.定义方式
static class ClassName {
//类体;
}
ii.使用要点:
当一个静态内部类对象存在,并不一定存在对应的外部类对象。因此静态内部类的实例方法不能直接访问外部类的实例方法
静态内部类看作外部类的一个静态成员,因此外部类的方法中可以通过:静态内部类.名字 访问静态内部类的静态成员。通过new静态内部类()访问静态内部类的实例
在外部类的外面创建静态内部类
上一篇: 创建类Student和对象