类一般是个抽象的概念,而对象则是类的实例,比如人类的实例对象是张三这个大活人。在用法上,我们一般是通过new关键字初始化一个类的实例,然后再调用类里的方法。比如 人类 张三 = new 人类();,再是张三.思考();。
在这种情况下,我们一般不会用人类.思考();这样的调用方式,因为抽象的人类是无法思考的。
不过在有些场景下,我们可以通过类.方法();的形式来调用。比如当我们用Math这个提供计算方法的类计算绝对值时,用的是Math.abs(-2),而不是先通过Math初始化一个对象再调用,这个原因是abs是静态方法。我们通过StaticDemo.java这个例子来看下静态类的用法。
1 public class StaticDemo { 2 private static int value = -2; 3 static void print() { 4 //静态类里只能使用静态的变量 5 System.out.println(Math.abs(value)); 6 } 7 public static void main(String[] args) { 8 //静态类里只能使用静态的方法 9 StaticDemo.print(); 10 } 11 }
我们发现静态类里只能使用静态的变量和方法,如果我们把第2行和第3行里针对静态变量和静态方法的static拿走,会报错。而在第9行里,我们是通过StaticDemo这个类(而不是new出来的对象)来调用print方法。
所以你被问到静态变量和静态类的用法时,可以说出如下要点。
要点1,由于可以不同new就能使用方法,一些程序员为了图省事,会大量定义静态方法,这样做会破坏类的封装性,而且会增加类之间的耦合度,所以只能在需要的场景下定义静态类。
要点2,静态变量相当于全局变量,所以只该把整个项目里都会用到变量设置成静态的。
要点3,在尽可能小的范围里使用静态类和静态方法。
更多java面向对象面试题的讲解分析:
Java面向对象面试题讲解:类和实例的差别
Java面向对象面试题分析,你知道哪些Java访问修饰符
Java面向对象面试题分析:静态变量和静态方法
Java面向对象面试题分析:说出抽象类和接口的差别
Java面向对象面试题分析:说出final关键字的用法
Java面向对象面试题解析:说下方法的覆盖和重载
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)