//从头开始学java
```## 第一章static关键字
** **static修饰方法,该方法不可以使用this,super等关键字,因为这些关键字实际上指的是具体的对象的内存地址,静态方法可以被类名.方法名调用,静态方法随着类的加载而加载不依附于任何对象.
并且静态方法中也不能调用非静态方法,因为非静态方法需要创建对象使用.
关于静态方法的重写问题:
静态方法不可以被重写,子类和父类创建相同方法时,不具有重写关系,代码eg:**
**
```java
public class Person {
private String name;
public static void printInfo(){
System.out.println("person的方法");
}
}
public class Man extends Person{
public static void printInfo(){
System.out.println("Man子类的方法");
}
}
public class Test {
public static void main(String[] args) {
Person man = new Man();
man.printInfo();
Man person = new Man();
person.printInfo();
}
}
代码输出:
person的方法
Man子类的方法
子类方法上加上@Override就会报错
static修饰成员变量,表示该变量是共享的.
static修饰方法, 该方法随着类的加载而加载,通过类名.方法名直接调用.也可以通过静态导包,然后直接通过方法名调用.
static修饰类.static可以修饰内部类.该类通过调用时l,不需要new子类了.直接使用Outer.Inner outer = new Outer.Inner();创建内部类对象.
– 静态内部类能直接访问外部类的静态成员,不能直接访问外部类的实例成员(外部类的对象访问)。
– 静态内部类里面可以定义静态成员,其他内部类不可以。