静态方法和非静态方法的区别:
非静态方法通常使用实例变量状态来影响方法的行为,用实例引用 Dog.eat();
静态方法不需要实例也可以调用,但是需要类例如Math.abs()
静态方法就是行为不依赖于实例变量,所以不需要类或对象,只需要类
通常,有静态方法的类不会实例化,比如public static void main(String[] args),这种都是为了启动或测试另一个类。
静态方法不能使用非静态变量
public class Main{
private int x;
public static void main(String[] args){
System.out.println(x);
}
}
静态方法也不能使用非静态方法
public class Main{
private int x;
public static void main(String[] args){
System.out.println(setX());
}
public void setX(int x){
this.x=x;
}
}
静态变量和非静态变量:
静态变量:对于所有类的实例,值都是一样的,相当于,一个类有一个值,而不是一个实例有一个值,静态变量在类中共享。
非静态变量也就是实例变量,每一个实例有一个自己的变量
静态初始化的两个保证:
一个类中的静态变量会在创建这个类的任何对象之前,和任何方法运行之前初始化
static和finall
标记finall表示,一旦初始化,变量就不会在改变了,常量,比如Math.PI
初始化一个静态最终变量的方法
public class Main{
public static final int x=11;
}
public class Main{
public static final double x;
static{
x=1.1;
}
}
//如果不是这两种方法为最终变量赋值,就会报错
除此之外,final也可以修饰非静态变量,包括实例变量,局部变量,方法参数等,含义均为常量。除此之外,还可以使用final防止有人覆盖一个方法或建立一个子类
class Poof{
//最终方法,不能覆盖这个方法
final void calcWhuffie(){
}
}
//最终类,不能扩展这个类(即不能建立子类)
final class MyMostPerfectClass(){
}
浙公网安备 33010602011771号