一.static 有什么用?
1.可以修饰成员变量,成员方法,内部类
2,不可修饰局部变量(局部变量属于类的,不属于方法,而静态是定义在类上的)。
二.static成员 的特点
1,被类中对象共享。
2,通过类名进行调用。
3,随着类的加载而加载。
4,优先于对象存在。
三.static方法的访问特点
1,静态方法只能调用静态成员(静态成员变量,静态成员方法)。
2.非静态方法可以调用任意成员。
原因:类优先于方法存在,非静态属于对象方法,静态属于类的方法,先进内存不能访问后进内存,非静态方法需要创建对象,用对象进行调用。
同理:静态方法中也不能用this,因为this是对象,类优先于对象存在,对象还没存在,所以不能写。
四.Java中可以重写private or static 的方法?
不可以
原因;1.private 修饰的方法是不可被重写的,private修饰只能在本类使用。
2.静态方法可以被继承,但没有意义,因为子类不是重写而是产生一个于父类毫无关系的静态方法,父类的隐藏了。
So,子类不能继承父类私有的或者是静态的方法
五.抽象方法可以被static修饰吗?
不能,抽象方法没有方法体,调没方法体的方法没意义。
六.静态内部类
静态内部类可以定义静态和非静态的成员变量和方法。
非静态的内部类只能定义非静态的成员(成员变量,成员方法)。
静态内部类只能访问内部静态和非静态的成员,只能访问外部类中的静态成员。
非静态类可以全访问,(内部静态和非静态的成员,外部的静态成员和非静态成员)
七,静态代码块
随着类的加载而加载,优先于构造方法执行,只执行一次,作用是:用于类的初始化,加载驱动。
八.static是把双刃剑
利:
1共享静态方法,节省空间,没必要每个对象储存一份。
2.可以通过类名调用。(工具类,单例模式)
弊:
1.静态方法随着类的加载而加载,随着类的消失而消失,生命周期长。
2.访问局限,只能访问外部静态资源。