实例方法、静态方法、构造方法

实例方法(在运行时动态绑定)

访问方法--->对象名.方法名(参数列表)

静态方法(在编译时静态绑定,不能直接访问实例变量和实例方法也不能使用this和super)
访问方法--->对象名.方法名(参数列表)、类名.方法名(参数列表)、方法名(本类访问)
构造方法:是类的一种特殊方法,主要完成新对象成员变量的初始化。特点包括:
                    ①可以定义多个构造方法,如果不定义会默认生成一个无参构造方法。
                    ②new、反射创建对象时自动调用
                    ③构造方法的方法名和类名相同并且没有返回值,也不可以用除访问控制修饰符外的修饰符修饰
                    ④如果构造方法的访问控制修饰符为private则表示禁止外部实例化该类,禁止继承该类,封装实例实现细节,内部提供静态方法实例化自身,控制实例数目--->静态工厂设计模式,特点是返回当前类子类的实例,每次被调用的时候不一定要创建一个新的对象。可以创建包括:
                      (1)单例类:唯一实例的类,在系统中具有唯一性的组件可使用单例类,这种类的实例通常会占用较多内存或实例化过程比较冗长,如果随意创建这些类的实例会影响系统的性能
                           实现方式一:private构造方法,public static final类型静态变量引用唯一实例,优点是比较快捷
                           实现方式二:private构造方法,private static final类型静态变量引用唯一实例,提供public static类型静态方法返回静态变量,优点是比较灵活
                      (2)枚举类:实例数目有限的类,提高程序健壮性减少代码出错机会
                          实现方法:private构造方法,public static final类型静态变量,每个静态变量引用类一个实例或允许用户根据特定参数获得与之匹配的实例
                      (3)具有实例缓存的不可变类:不可变类实例一旦创建属性值不会改变,线程安全,比如包装类、String。实现不可变类的方法:使用private final类型封装属性并在构造方法中初始化所有属性,不提供set方法而只提供get方法供访问,覆盖Object的equals方法根据对象属性值比较是否同一对象,覆盖Object的hashcode方法保证返回值相同,提供缓存和静态工厂方法允许用户根据特定参数获得与之匹配的实例,如果属性是Date类型这种可变类型还需要提供copy保护。能把已经创建的实例暂且存放在缓存中的类,需要考虑何时把实例加入缓存,何时把不再用的实例从缓存中清除以保证有效合理的利用内存空间,一种简单的方式可以使用Java集合来作为实例缓存。没有必要为所有的不可变类提供实例缓存,随意创建反而会浪费内存空间降低程序的运行性能,通常需要实例缓存的条件是A.不可变类的实例数量有限B.在程序运行过程中需要频繁访问不可变类的一些特定实例,这些实例拥有和和程序本身同样长的生命周期。
                   ⑤如果在同类中使用this调用别的构造方法需要放在第一行,同理子类构造方法使用super调用父类构造方法也要放在第一行,如果不使用super默认会调用父类构造方法
                   

你可能感兴趣的:(Java)