1. 静态成员
当方法的执行与对象完全无关时,不需要创建对象,完全可以要求类自身来运行这个方法。
特殊情况:如记录某个类的所有对象的
个数等关于这个类对象的信息,必须要一个依赖于类的而不是一览与对象的变量来记录此信息,否则将不能解决问题。
2. 静态成员的访问
1. 静态方法访问非静态成员
-
public class Console {
-
static int x=100;
-
public static void main(String[] args) {
-
System.out.println(x);
-
}
-
}
2 非静态方法访问静态成员
-
public class Console {
-
static int x=100;
-
public void showStatic() {
-
System.out.println(Console.x);
-
}
-
public static void main(String[] args) {
-
Console console = new Console();
-
console.showStatic();
-
}
-
}
3. 静态最终成员变量初始化
1. 声明的同时进行初始化
2. 静态语句块中那个初始化
-
public class Console {
-
public static final int x1 = 100;
-
public static final int x2;
-
static{
-
x2 = 100;
-
}
-
public static void main(String[] args) {
-
System.out.println(Console.x1);
-
System.out.println(Console.x2);
-
}
-
}
4. 若接口中的方法被声明为静态,那么意味着接口中的方法无法被重写,因此不允许由于修饰接口函数。
5.静态工厂
-
class Animal{
-
private Animal(){
-
//私有构造器
-
}
-
public static Animal getAnimal(){
-
return Animal();//通过调用getAnimal()即可,称之为静态工厂
-
}
-
}
6.静态方法中的局部内部类
若局部内部类位于静态方法中,则只能访问外部静态类的成员。
-
package wyf.jc;
-
//外部类
-
class Outter
-
{
-
//定义普通成员变量,此处必须为static,否则报错。
-
static int x=100;
-
//定义静态方法
-
public static void getInner()
-
{
-
//定义内部类
-
class Inner
-
{
-
//定义内部类方法show
-
public void show()
-
{
-
//打印输出,并调用该方法中的局部变量
-
System.out.println("访问方法中的局部变量,x = "+x);
-
}
-
}
-
Inner i=new Inner();
-
i.show();
-
}
-
}
-
//主类
-
public class Sample15_9
-
{
-
public static void main(String[] args)
-
{
-
//调用静态方法
-
Outter.getInner();
-
}
-
}
7.静态内部类
语法:
class
{
static class {
//blabla...
}
//blabla..
}
创建对象:
outter.inner name = new outter.inner(...);
静态内部类也称内部嵌套类,非内部静态类应该与外部类的对象成员的共享关系,其实外部类对象组成的一部分,静态内部类其实已经脱离了外部类的控制,创建其对象时不需要外部类对象的存在,其实质只是一个放置在别的类中的普通类,static说明其创建对象时不依赖外部对象的存在。
阅读(755) | 评论(0) | 转发(0) |