Java面向对象(高级)
1、类变量
类变量是被类的所有实例共享的。
类变量具体放的位置在哪?在内存中的那个区域,这和jdk的版本是有关的
静态变量在类加载的时候就生成了,即使没有创建类实例也能访问,当然通过实例来实现
类变量定义
访问修饰符 static 类型 变量名
2、类方法
1、只需要在普通方法前面加上一个static就可以把该方法变成类方法
2、当方法中不涉及任何和对象相关的成员的时候把方法设置成静态方法可以提高效率
3、类方法中不允许使用和对象相关的关键字如this、super
类变量定义
访问修饰符 static 返回值类型 方法名(){}
我们需要记住静态方法只能访问静态成员,非静态可以访问静态和非静态
3、main方法
1、main方法是JVM在调用,访问权限必须是public
2、java虚拟机在调用main方法时不必实例化对象
使用细节
main方法可以直接使用静态成员,但不能直接使用非静态成员,如果要使用非静态成员需要实例化出来一个对象
代码块
代码块相当于构造器(或则说是对构造器的补充),可以做初始化操作
使用方法:当构造器中有多个重复语句时,使用比较方便
//修饰符可以写也可以不写,写的话就只能写static,后面的;可以写也可以不写
[修饰符]
{
};
使用细节:
1、如果修饰符是static,那么代码块在类加载时被执行,且只会被执行一次
2、类加载的时间:创建类的实例、创建子类的实例父类也会被加载、使用类的静
3、对象实例化时,类内部的执行顺序:1、静态代码块、静态属性初始化 2、普通代码块、普通属性初始化 3、构造器
4、先加载父类,再加载父类,再初始化父类再初始化子类
单例设计模式
保证一个类只有一个实例
单例模式分为两种一种是饿汉式、一种是懒汉式
1、将构造器私有化 2、在类的内部直接创建 3、提供一个static方法直接返回创建的对象
懒汉式和饿汉式的区别在于实例化的时间,饿汉式是在类加载的时候就创建了实例,懒汉式是在调用getInstance时才会创建实例
懒汉式不会造成资源的浪费
final
1、当一个类不希望被其他类继承时,可以在这个类前面加上final
2、当父类的一样方法不希望被重写时,可以用final修饰
3、当类的某个属性不希望被修改时,可以用final修饰,
其实可以这样理解当一个东西不希望被修改时,我们可以final修饰
使用细节
1、final修饰的属性被称为常量一般用大写字母+_组成,而且必须进行初始化
2、如果final修饰的是静态的,那么初始化时只能在定义时或则静态代码段
3、如果类不是final类,但是含有final方法,则该方法虽然不能重写,但却可以继承,子类使用。
4、如果类已经用final修饰了,就没有必要再用final修饰方法了。
5、包装类(Integer,Double,Float,Boolean等都是final),String也是final类。