static关键字的总结
static静态方法
static修饰的方法,即无需本类的对象即可调用此方法,关于static方法,声明为static的方法有以下几条限制:
1、它们仅能调用其他的static方法
2、它们只能访问static数据
3、它们不能以任何方式引用this或super
static修饰的变量、static修饰的方法,都是属于类本身的。用static修饰的变量和方法在类加载的时候,只分配一块存储空间,所有此类的对象都可以操控此块存储空间。
问题:Java中子类是否可以继承父类的static变量和方法而呈现多态特性?
1、子类是不继承父类的static变量和方法的。因为这是属于类本身的,但是子类可以访问父类的static变量和方法。
2、因为不继承,所以子类和父类中同名的static变量和方法是相互独立的,并不存在任何的重写的关系。
代码示例如下:
package sol1_10; public class Parent { public static void staticMethod(){ System.out.println("Parent staticMethod run"); } public void method(){ System.out.println("Parent method run"); } }
package sol1_10; public class Son extends Parent { public static void staticMethod(){ System.out.println("Son staticMethod run"); } public void method(){ System.out.println("Son method run"); } }
package sol1_10; public class Main { public static void main(String[] args) { Parent.staticMethod(); Son.staticMethod(); Parent parent = new Son(); parent.staticMethod(); parent.method(); Son son = new Son(); son.staticMethod(); son.method(); } }
Parent staticMethod run
Son staticMethod run
Parent staticMethod run
Son method run
Son staticMethod run
Son method run
static的使用
1、修饰成员变量和成员方法
2、静态代码块
(1)静态代码块定义在类中方法外
(2)静态代码块的格式是
static{
语句体;
}
(3)优先于主方法执行、优先于构造代码块执行,当以任意形式第一次使用到该类时执行
(4)该类不管创建多少对象,静态代码块只执行一次
一个类中的静态代码块可以有多个,位置可以随便放,它不存任何的方法体内,JVM加载类时会执行这些静态的代码块,如果静态代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。
3、修饰类(只能修饰内部类)
静态内部类:普通类时不允许声明为静态的,只有内部类才可以,被static修饰的内部类可以直接作为一个普通类来使用,而不需实例一个外部类。
public class Outter { static class Inner { public void show() { System.out.println("这是一个静态内部类"); } } public static void main(String[] args) { Inner i = new Inner(); i.show(); /** * 如果是普通内部类,则创建对象的格式为: * 外部类名.内部类名 对象名 = new 外部类名().new 内部类名(); */ } }
public class Outter { class Inner { public void show() { System.out.println("这是一个普通内部类"); } } public static void main(String[] args) { Inner i = new Outter().new Inner(); i.show(); } }
4、静态导包(用来导入类中的静态资源,1.5之后的新特性)
格式为:import static
这两个关键字连用可以指定导入某个类中的指定静态资源,并且不需要使用类名调用类中静态成员,可以直接使用类中静态成员变量和成员方法
适用场景:
工具库方法。不需要实例化的方法。与具体业务无关,执行比较频繁,用的地方多的方法。

浙公网安备 33010602011771号