Java-static和接口(简述)

来源:互联网 发布:淘宝钻号出售 编辑:程序博客网 时间:2024/06/16 07:47

static

根据Sun建议的良好的编程实践,实例变量应该总是被声明为私有的。当类变量被用作常量的时候,被声明为public是可以的。

变量:

  • 当JVM将类定义加载到内存中时,会为静态字段分配内存空间。静态变量只在执行时被初始化一次。
  • 在任何的实例变量中初始化之前初始化所有的静态字段。
  • 静态字段可以直接通过类名来访问,不需要任何对象引用。

静态方法

  • 静态方法通过类引用调用。可以使用对象引用来调用静态方法,但通常这不被认为是一种良好的风格。
  • 静态方法中不能有this和super关键字。
  • 静态方法可以访问类的静态字段和方法。
  • 静态方法不能访问类的非静态字段和方法。
  • 静态方法不能被子类重写。

静态初始化器.

  • JVM将静态初始化器的大小限制为64K。因此,不能在静态初始化器中放太多代码。
  • 不能从静态初始化器中抛出被检查的异常。
  • 不能在静态初始化器中使用this关键字,因为目前还没有创建实例。
  • 不能再静态初始化器中调用super。
  • 静态初始化器没有返回类型。

接口

不能对接口方法使用一下修饰符:private,protected, transient, volatile和synchronized

  • 接口与类非常相似,但接口只可以有隐式为公有的和静态的字段,以及隐式为公有的和抽象方法的声明。
  • 接口编译成.class文件并且被与加载类相同的线程加载。
  • 可以创建类型是接口名字的引用变量,通过这个引用,只有在接口中的方法是可见的。
  • 接口中定义的任何常量在类的代码中可以不用前缀访问,因为实现接口使得他们成为实现类的一部分。

抽象类

抽象类不能被实例化,但是可以被子类化。

  • 接口只包含方法签名,而抽象类可能有许多方法的实现。
  • 接口的所有方法默认都是公有的,不能为接口中声明的方法应用其他任何访问修饰符。在抽象类中,实现的方法可以在他们的声明中应用访问修饰符。为了这样做,接口的方法必须是公有的,声明它们为protected或private将会导致错误。在抽象类中,可以为实现的方法应用protected修饰符,但是不能应用private修饰符。
  • 接口可以扩展多个接口,抽象类不能从超过一个的抽象类扩展。
  • 接口中的所有方法都是隐式抽象的,抽象类可以有一些具体的方法。
  • 接口不能有构造函数,抽象类可以声明构造函数。
原创粉丝点击