类的构成
类的构成有以下部分构成:
代码段
动态代码段
静态代码
成员变量
静态变量
局部变量
常量
成员方法
静态方法
构造方法
this(对象)
super(对象)
下面对类里面的东西进行一一分析,可以更清晰的理解Java类的构成
代码段:
一个完整的大括号就是一个代码段,就代表了一段独立的内存空间,空的也是个代码
动态代码段:
1、就是没有任何修饰的一对大括号{}
2、也就是写记录日志,还就是性能测试
静态代码段:
1、用static修饰的一对大括号static{},是在类加载阶段就运行的代码段
2、写日志用,用于记录类被调用的时间的数据
成员变量:
1、每个对象中的值都是不一样,但是也可以一样
2、保存的位置:堆内存,堆内存的大小是动态分配
3、赋值时间:一般情况下在实例化之前是空值,没有赋值的
在实例化的时候赋值,调用对应的构造方法对成员变量赋值,也可以不赋值,编译器会给默认值。通过调用成员变量进行赋值也可以
和局部变量的区别:局部变量必须声明就赋值,要不然会报错。
也是引用数据类型中,多态发生的时候
4、关联关系:成员变量的值是另外一个类对象的引用
5、调用:对象名.成员变量名。类名不可以调用成员变量,静态上下中不可以调用非静态属性
静态变量:
1、是属于类级别的,每个对象中的都一样
2、保存位置是静态数据区
3、最好在声明的时候就赋值
4、调用:类名.静态变量名
局部变量:
1、在方法中生命的变量是局部变量,并且生命的时候,就必须赋值
2、局部变量优先级大于成员变量的优先级
3、方法的形参列表也是局部变量
4、局部变量和循环体重的变量不可以重名
5、依赖关系:局部变量的值是另外一个类对象的引用
常量:
1、声明:public static final 数据类型 大写_ = 值;
2、在整个软件生命周期中,值不会改变
3、在接口中,psf可以省略
4、调用:类名.常量名
成员方法:
1、没有static修饰的方法叫成员方法
2、调用:对象名.成员方法名(实参列表);
3、多态:方法生命的时候,形参列表中是父类或是借口
调用的时候,传的是子类对象的引用
静态方法:
1、用static修饰的方法
2、调用:类名.静态方法名(实参列表);
3、保存在静态代码区中
4、不能再静态方法中调用非静态的成员属性
构造方法:
1、用于在类实例化中,创建当前类对象的方法(实例化当前类对象)
2、默认是:公共的,静态的,没有返回值的,名字和类名一样的
3、在实例化中,一般用于实例化成员变量
4、注意: 单例模式中的使用
构造的重载,对不同的成员变量进行赋值
不可以被继承复写,但是可以被调用,super()
接口中没有构造方法,因为接口就是用类实现的,不需要构造方法,接口不能被实例化
抽象类中有构造方法,用于子类实例化父类对象super()
this(对象):
1 给成员变量加前缀,然后复制
2 用在构造方法中,重载调用本类中别的构造方法,this()重载调用的时候,必须写在构造方法的第一行
3 用于表示本类的对象,里面保存了本类的地址,this位于堆内存中第一个内存片中
4 在堆内存中,我们有堆内存中第一个内存片的内存地址作为整个对象的内存地址,并且命名为this
super(对象):
1 super代表的是当前子类对象中的父类型特征
2 在子类的构造方法重载调用父类别的构造方法的时候,必须写在第一行
3 super()和this()不能重复出现
4 super可以用来调用父类的成员属性和成员方法
在上面的说明中,有两个字出现的频率很高:调用。其实类最主要的作用就是:代码复用
类对象之间的6中关系:
1 继承
2 实现
3 依赖:局部变量是另外一个类对象的引用
4 关联:成员变量是另外一个类对象的引用
5 聚合:类中的集合中的元素是另外一个类对象的引用
6 组合