目录
static:
用来做内存管理的,
static用来干什么:
static用于属性的时候,它帮助我们做数据的共享;
static用于方法的时候,更好地封装。
static怎么用:
用于属性:在属性数据类型前加static,如:
static String name;//静态的属性用于成员方法:直接在作用修饰符的后面加static关键字
public static void add(){//静态的方法 }static里面不能使用this
注意事项:
1.被static修饰的方法建议由类名直接调用
2.static修饰的方法里面不能使用this关键字
3.被static修饰的属性或方法是随着类加载而存在(类加载的时候,对象未必有了)
扩展:
静态代码块:
static { System.out.println("我是静态代码块");//类一加载,就执行 }
展示静态代码块和构造函数和普通函数的优先性:
首先新建
//父类 public class Father { static { System.out.println("我是父类中的静态代码块"); } public Father(){ System.out.println("我是父类的构造方法"); } public void f(){ System.out.println("我是父类的普通方法"); } } //子类 public class Son extends Father{ static { System.out.println("我是子类中的静态代码块"); } public Son(){ System.out.println("我是子类的构造方法"); } public void s(){ System.out.println("我是子类的普通方法"); } }//测试 public class Test { public static void main(String[] args) { Son son = new Son(); son.s(); } }运行结果:
只要类一加载,静态代码块就有空间,就首先运行,不论有没有对象。
多态:在不同的环境下表现不一样
多态可以体现在方法上如:方法的重载;
也可以体现在面向对象:把子类对象赋给父类的类型
父类类型 子类对象的名字 = new 子类构造方法();
多态能干什么:
使用多态的好处在于,在继承关系中,有多个子类时,不确定到底是哪个子类对象作为参数传递,可以使用多态,代替了方法重载,减少了代码量,扩展了程序。
编译的时候看等号左边,执行的时候看等号右边。(不太懂这句话)