一、static关键字
在JAVA中,可以将一些成员限制为和类相关的,而不是和实例相关的。实现:在类的成员例如:方法,属性,自用代码块前加上static修饰符。
实例变量用于描述单个实例的状态,而类变量用于描述类的状态,和具体的实例无关。
public class TestStatic {
public static int count = 0;
public TestStatic(){
count++;
}
public static int getCount(){
return count;
}
public static void main(String[] args) {
TestStatic t1 =new TestStatic();
System.out.println(t1.count);
//第二次调用会在原来的基础上+1,而不是初始化为0再+1
TestStatic t2 = new TestStatic();
System.out.println(t2.count);
//因为是类成员,所有可以这样调用:类名.*来直接调用他们
System.out.println(TestStatic.count);
System.out.println(TestStatic.getCount());
/*
输出结果:1
2
2
2
*/
}
}
二 、final关键字
在JAVA的类,方法和变量前面,可以加上final关键字。final关键字表示它修饰的类,方法或变量不可被改变。final类不可以被继承。如:java.lang.Math
final变量可以称为常量。
三、抽象类(abstract)
在类中对一些方法进行定义,但是不具体实现,而是将这些方法的实现放到它的子类中去。抽象类里面并非需要抽象方法,当你定义了一个类,但是又不想被它直接实例化的时候,可以使用抽象类的方法实现。反之,如果类中有抽象方法,则一定将类定为抽象类。
满足以下任一条件,必须定义为抽象类:
(1)类中有至少一个抽象方法;
(2)类继承了父类中的抽象方法,但是至少有一个抽象方法没有实现;
(3)类实现了某个接口,但没有全部实现接口中的方法;
四、接口
接口是方法声明和常量值得定义的集合。在抽象类中,有些方法被实现,而有些方法只有方法的声明,没有方法的具体实现(抽象方法),而在接口中,所有的方法都没有被实现。和抽象类中的抽象方法不一样,这些没有被实现的方法不需要加上关键字abstract来将它声明为抽象方法。
(1)接口的继承:使用extends完成,一个子接口可以继承多个父接口。
(2)接口的使用:在子类中使用implements实现接口,一个实现了的接口的类,必须将它实现的接口中的方法都实现,或者将没有实现的方法定义为抽象的方法,此时,类也必须定义为抽象的类。