1.final关键字
final 最终的,最后的。它可以修饰类,也可以修饰变量,也可以修饰方法。
final修饰类,代表这个类是一个最终类,也就是这个类中的内容不允许发生改变,所以这个final类是没有子类的,即它不允许被继承。
final和abstract关键字能同时出现在class前吗?
final和abstract关键字是不能同时出现在class前的。定义抽象方法时必须用abstract关键字修饰类,用abstract关键字修饰的类叫做抽象类。要实现抽象类的方法必须用子类继承该抽象类,即该类必须要有子类才能实现它的抽象方法。因为abstract修饰的类很大可能会有子类,final修饰的类是最终的类,不会有子类,所以final和abstract同时修饰类会出现歧义,它们不可以同时出现在class前。
示例:
final修饰变量,代表这个变量变成了常量,常量不允许二次修改。
final修饰方法,代表这个方法是一个最终的方法,也就是这个方法内容是不变的,所以它和abstract关键字是冲突的。
2.static关键字
static 静态的,本地的,它可以修饰属性、可以修饰方法。
static修饰属性,表明该属性是属于类的,不是属于对象的,被static修饰的属性被所有的由该类创建的对象所共享。
//Animal类
public class Animal {
static int age;
}
import com.Animal;
public class TestAnimal {
public static void main(String[] args) {
// static
Animal cat = new Animal();
Animal dog = new Animal();
Animal bird = new Animal();
cat.age = 10; // age 是静态的 由类来调用
System.out.println(cat.age); //输出结果 10
System.out.println(dog.age); //输出结果 10
System.out.println(bird.age); //输出结果 10
}
}
static修饰方法,代表该方法是静态方法,它是属于类的,它的调用使用类来进行调用 ,即
类名.方法名。