一、 关键字final
1) final修饰类
在定义类时加上final修饰符,说明该类是最终类,不能被继承,即不能当父类
2) final修饰变量
final修饰的变量是最终变量,即常量。不能修改其值,在定义时必须赋值
3) final修饰方法
final修饰的方法是最终方法,父类包含最终方法时,子类不能覆盖该方法。
二、 关键字static
1) static修饰类
static修饰的类称为静态类。
静态类作为类的静态成员存在于某个类中。静态成员类可以不创建父类对象直接创建静态类的对象。
2) static修饰变量
类中static修饰的变量称为静态变量(也称类变量)。
类的成员变量分为类变量和实例变量。实例变量属于具体的对象,类变量属于类,不同对象的实例变量被分配到不同的内存空间,而对于类的所有对象来说,类变量共享同一个内存空间。
程序执行时,类的字节码被加载到内存中,类没有创建对象时,类变量已经被分配内存,实例变量在创建具体对象时才分配内存空间。
3) static修饰方法
类的成员方法分为类方法和实例方法,用static修饰的方法是类方法,否则是实例方法。实例方法只有生成对象时才分配内存。
类方法可以通过类名直接调用,实例方法只能同过类对象调用。
note:类方法中不能使用类的实例变量,只能使用类变量。
三、 关键字this
this关键字指类本身。
四、 关键字super
super关键字指父类。在子类中使用被覆盖的父类的成员变量和方法。
class father { //final public final double PI = 3.14;//定义常量PI //public final int fi; //错误,常量必须赋值。 public final void final_method_f() { System.out.println("父类:final方法不能重载"); } //static static int static_in; static void static_method() { System.out.println("父类:static方法可以通过类名直接调用"); } static class static_InnerClass { void method() { System.out.println("method_father_inner:静态内部类可以不创建父类对象直接创建内部类对象"); } } } class sun extends father { public final double PI = 6;//父类的final变量可以重载。 /* public final void final_method_f() { //父类的final方法不能重载。 } */ static int static_in ;//static变量可以重载 static void static_method()//static方法可以重载 { System.out.println("子类:static方法可以通过类名直接调用"); } static class static_InnerClass//static静态内部类可以重载 { void method_sun() { System.out.println("method_sun_inner:静态内部类可以不创建父类对象直接创建内部类对象"); } } void mehtod() { System.out.println("PI="+PI); System.out.println("super.PI="+super.PI); } } public class keyword { public static void main(String args[]) { //静态内部类可以不创建父类对象直接创建内部类对象 father.static_InnerClass obj= new father.static_InnerClass(); obj.method(); sun.static_InnerClass obj_s=new sun.static_InnerClass(); obj_s.method_sun(); //静态方法可以通过类名直接调用 father.static_method(); sun.static_method(); //静态变量可以通过类名直接调用 father.static_in=10; sun.static_in=20; System.out.println("father.static_in="+father.static_in); System.out.println("sun.static_in="+sun.static_in); father test_father=new father(); test_father.final_method_f(); sun test_sun=new sun(); test_sun.final_method_f(); test_sun.mehtod(); } }
输出:
method_father_inner:静态内部类可以不创建父类对象直接创建内部类对象
method_sun_inner:静态内部类可以不创建父类对象直接创建内部类对象
父类:static方法可以通过类名直接调用
子类:static方法可以通过类名直接调用
father.static_in=10
sun.static_in=20
父类:final方法不能重载
父类:final方法不能重载
PI=6.0
super.PI=3.14
final修饰的类不能继承、方法不能重载,变量(final修饰的变量是常量)可以重载
static修饰的变量、方法、内部类,都可以通过类名直接调用
static修饰的变量、方法、内部类,都可以重载。