目录
static:
static用来干什么:
static怎么用:
static里面不能使用this
注意事项:
扩展:
静态代码块:
展示静态代码块和构造函数和普通函数的优先性:
多态:在不同的环境下表现不一样
多态能干什么:
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();
}
}
运行结果:
只要类一加载,静态代码块就有空间,就首先运行,不论有没有对象。
多态:在不同的环境下表现不一样
用来做内存管理的,
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();
}
}
运行结果:
只要类一加载,静态代码块就有空间,就首先运行,不论有没有对象。
多态:在不同的环境下表现不一样
展示静态代码块和构造函数和普通函数的优先性:
首先新建
//父类
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 子类构造方法();
多态能干什么:
使用多态的好处在于,在继承关系中,有多个子类时,不确定到底是哪个子类对象作为参数传递,可以使用多态,代替了方法重载,减少了代码量,扩展了程序。
编译的时候看等号左边,执行的时候看等号右边。(不太懂这句话)



