静态、抽象、内部类
一.static
static 修饰符可以修饰属性、方法、代码块
1.静态属性
- 静态属性属于类可以直接使用类名来访问,也可以使用对象访问
- 非静态属性属于对象的,一定要使用对象来访问
- 静态变量可以通过类名直接访问
- 静态变量在同一个类中是所有对象共享的
- 静态变量再类加载的时候就生成了
2.静态变量是什么
- 是该类的所有对象共享的一个变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是 同一个变量
3.静态变量的定义方式
访问修饰符 static 数据类型 变量名【常用】
例如: public static int number;
static 访问修饰符 数据类型 变量名
-----------------------------------------------------------------
public class Static_ {
public static void main(String[] args) {
//静态变量是随着类的加载而创建,所以即使没有创建对象实例也可以访问
//类名.静态变量名
System.out.println(A.number);
A a = new A();
//通过对象名.类变量名
System.out.println(a.number);
}
}
class A {
//静态变量的访问 必须遵守相关的访问权限
public static int number=582222804;
}
4.静态变量使用细节
- 什么时候需要使用静态变量
当我们需要让某个类的所有对象都能共享一个变量的时候,就可以考虑使用静态变量 比如:定义一个仓库类,统计不同人一共在仓库存放了多少货物。 - 加上
static
称为静态变量 或者 类变量 ,否则就是实例变量/普通变量/非静态变量 - 非静态变量不能通过 类名.类变量名 方式访问
5.静态方法
- 形式如下
访问修饰符 static 数据返回类型 方法名() {
}//访问修饰符可以和static互换位置
6.静态方法使用细节
- 静态方法可以使用类名直接调用
- 静态方法中不能调用类中的非静态方法和非静态属性,只能访问静态变量或者静态方法
class A { public static int number = 582222804; private String name = "小侯"; public static void hello() { System.out.println("hello"); } public static void hi() { System.out.println(A.number);//访问静态属性 编译通过没有报错 System.out.println(A.name);//访问非静态属性 报错 x say();//访问非静态方法 报错 hello();// 访问静态方法 通过 }