Static:用来声明类中的全局类变量,相对于实例变量。如下:
public class StaticTest
{
int x=1; //实例变量
static int y=1; //全局变量
public StaticTest()
{
x++;
y++;
}
public static void main(String[] args)
{
StaticTest t1=new StaticTest(); //生成实例t1
StaticTest t2=new StaticTest(); //生成实例t2
System.out.println("t1.x="+t1.x); //输出实例t1中的变量x
System.out.println("t2.x="+t2.x); //输出实例t2中的变量x
//System.out.println("StaticTest.x="+StaticTest.x);//无法输出类StaticTest中的
变量x
System.out.println("StaticTest.y="+StaticTest.y);//输出类StaticTest中的变量y
}
}
//执行后输出结果如下:
t1.x=2
t2.x=2
StaticTest.y=3
在上例中x为实例变量,y为全局变量。当生成StaticTest类的实例t1时系统为实例变量x、全局变量
y初始化分配空间,并执行方法StaticTest();生成第二个实例t2时重新初始化x为1、全局变量y此时
已经赋值为2,执行方法ststictest();实例变量无法由类直接引用,必须在生成实例后由实例进行
引用。
final:只用来修饰类及其的成员:变量、方法;final类无法继承、final变量无法修改、final方法
无法重写。如下:
public final class FinalTest
{
final int i=10;
public FinalTest(){}
public final int getNumber()
{
i =20;//i无法被再次处世化
return i;
}
}
class FinalSub extends FinalTest{}//FinalTest无法被继承FinalSub
class FinalDemo
{
final int getNumber()
{
return 10;
}
}
class FinalDemoSub extends FinalDemo
{
int getNumber(){return 20;}//getNumber()无法重写
}
Abstract:用来声明类为抽象方法类,被Abstract声明的类中至少有一个方法被Abstract声明为抽象方法并且抽象方法中没有实现内容。含有抽象方法的类必须被声明为抽象类。
抽象类无法创建对象,只能用来被继承,继承抽象类的子类必须重写所有父类中的抽象方法。如:
public abstract class Account
{
public abstract String getName();
.....
}
InterFace:接口是抽象类的一个特例,接口中所有的方法必须为抽象方法,一个类可以实现多个接口,接口可以继承接口。