Java基础——关键字

1.static

  可以用来修饰属性、方法、代码块(初始化块)、内部类

  (1)static修饰属性(类变量) 

    其余的叫实例变量

    1.由类创建的对象,都共用这一个属性

    2.当其中一个对象对此属性进行修改,会导致其他对象对此属性的 一个调用。 vs 实例变量(非static修饰的属性,各自有各自的一套副本 )

    3.类变量是随着类的加载而加载的。独一份

    4.静态的变量可以直接通过“类.类变量”的形式来调用

    5.类变量的加载早于对象,而实例变量是随着对象的创建而被加载的。

    6.类变量存在于静态域中。

  (2)static修饰方法(类方法):
    1.随着类的加载而加载,独一份
    2.可以直接通过“类.类方法”调用
    3.在类方法内部可以调用静态的属性或静态的方法,但是不能调用非static的属性或方法。反之,非静态的方法可以调用静态的属性或方法

注:静态的方法内,是不可以有this或super关键字的!静态的结构(static的属性、方法、代码块、内部类)的生命周期早于非静态的结构,同时被回收也要晚于非静态的结构

2.final关键字:最终的,可以用来修饰类、属性、方法
  1.final修饰类:这个类就不能被继承
  2.final修饰方法:这个方法不能被重写
  3.final修饰属性:此属性就是一个常量,习惯上,常量用大写字符表示
  此常量在哪里赋值:1.此常量不能使用默认初始化。2.可以显式的赋值,或在代码块、构造器中赋值也可以,但是不可以在方法中赋值。

  全局变量:变量用static final修饰

3.abstract:抽象的,可以用来修饰类、方法
  1.abstract修饰类:抽象类
    1)不可被实例化
    2)但是有构造器(凡是类都有构造器)
    3)抽象方法所在的类,一定是抽象类
    4)抽象类中可以没有抽象方法

abstract class Person(){//抽象类
    String name;
    public abstract void eat();//抽象方法
    public abstract void walk();//同上
    public Person(){}//空构造器
    public Person(String name){//含参的构造器
    this.name = name;
    }
}

  2.abstract修饰方法:抽象方法
    1)格式:没有方法体,包括{} 如public abstract void eat();
    2)抽象方法只保留方法的功能,具体的执行,交给继承抽象类的子类,由子类重写抽象方法
    3)若子类继承了抽象类,并重写了所有的抽象方法,则此类是一个“实体类”,即可以实例化
    4)若子类继承了抽象类,只重写了部分抽象方法,意味着此类中仍有抽象方法,则此类必须声明为抽象的!

注:abstract不能用来修饰属性、构造器、private、final、static

原文地址:https://www.cnblogs.com/SkyeAngel/p/7793588.html