内部类static ,final

原创 2013年12月03日 11:51:25

一.static变量只会有一个内存空间,虽然后多个实例,但这些实例中的static变量会共享同一个内存空间。
     static变量是在类装载的时候就被初始化的。

     Static基本规则:
             (1)一个类的静态方法只能访问静态属性。
             (2)一个类的静态方法不能直接调用非静态方法。
             (3)如果访问权限允许,static属性和方法可以使用对象加’.’方式调用,当然也可以使用实例加’.’方式调用。
             (4)静态方法中不存在当前对象,所以不能使用this,当然也不能使用super。
             (5)静态方法不能被非静态方法覆盖。
             (6)构造方法不允许被声明为static的。

二.final

    使用规则:
    (1)final标记的类不能被继承。
    (2)final标记的方法不能被子类重写。
    (3)final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次。
    (4)final 标记的成员变量必须在声明的同时赋值,如果在声明的时候没有赋值,那么只有一次赋值的机会,而且只能在构造方法中显式赋值,然后才能使用。
    (5)final标记的局部变量可以只声明不赋值,然后再进行一次性的赋值。
    (6)final 一般用于标记那些通用性的功能、实现方式或取值不能随意被改变的成分,以避免被误用。

    普通类型:字母大写,不同单词间用下划线隔开。
    引用类型:字母大写,不用下划线隔开。

三.内部类

    Java中允许一个类的内部定义另一个类,后者成为内部类。
    内部类特点:
        (1)内部类可体现逻辑上的从属关系,同时对于其他类可以控制内部类对外不可见。
        (2)外部类的成员变量的作用域是整个外部类,包括内部类。但外部类不能访问内部类的private成员。
        (3)逻辑上相关的类可以在一起,可以有效的实现信息隐藏。
        (4)内部类可以直接访问外部类的成员,可以用此实现多继承。
        (5)编译后内部类也被编译为单独的类,不过名称为outclass$inclass的形式。

    匿名内部类:public void t1(){

    final int a = 15;

    String a = “t1”;

    new Aclass(){

        public void testA(){

            System.out.println(TOTAL_NUMBER);

            System.out.println(id);

            System.out.println(a);

         }

    }.testA();

}

public void t1(){

    Class B extends Aclass{

        public void testA(){

            System.out.println(TOTAL_NUMBER);

            System.out.println(id);

            System.out.println(a);

        }

         new B().testA();

   }

}
匿名内部类规则:
      (1):匿名类没有构造方法;
      (2):匿名类不能定义静态的成员;
      (3):匿名类不能用4 种权限、static、final、abstract修饰;
      (4):只可以创建一个匿名类实例

四. 析构方法finalize 的功能是:当对象被从内存中删除时,该成员方法将会被自动调用。    
    通常,在析构方法内,你可以填写用来回收对象内部的动态空间的代码。

相关文章推荐

JAVA基础-栈与堆,static、final修饰符、内部类和Java内存分配

Java栈与堆 堆:顺序随意 栈:后进先出(Last-in/First-Out).        Java的堆是一个运行时数据区,类的对象从中分配空间。这些对象通过new、newarray...
  • mooxin
  • mooxin
  • 2012年04月27日 16:48
  • 4539

JAVA基础-栈与堆,static、final修饰符、内部类和Java内存分配

Java栈与堆 堆:顺序随意 栈:后进先出(Last-in/First-Out).        Java的堆是一个运行时数据区,类的对象从中分配空间。这些对象通过new、ne...

JAVA基础之包装类,static,final,abstract ,接口 和 内部类

包装类:   自jdk5之后,java就提供了自动装箱与自动拆箱功能,大大简化了基本类型与其包装类对象之间的转换过程,当然装换过程中要注意类型的匹配。 public class IntAndInt...
  • liuxins
  • liuxins
  • 2016年05月15日 20:55
  • 4349

mabatis学习之前今日内容介绍 1、final 关键字 2、static 关键字 3、匿名对象 4、内部类 5、包的声明与访问 6、访问修饰符 7、代码块 第一节课 ###01(面向对象)fin

今日内容介绍 1、final 关键字 2、static 关键字 3、匿名对象 4、内部类 5、包的声明与访问 6、访问修饰符 7、代码块 第一节课 ###01(面向对象)fi...

static、final修饰符、内部类

static修饰符:  static修饰符能够与属性、方法和内部类一起使用,表示静态的。类中的静态变量和静态方法能够与类名一起使用,不需要创建一个类的对象来访问该类的静态成员。 class Sta...

【java面试题】Static Nested Class(嵌套类) 和 Inner Class(内部类)的不同 、final、static

nested class(一般是c++的说法),Inner class(一般是java的说法)。JAVA内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。 具体可见http://java....

内部类使用final关键字的理解

(1).内部类是外部类的一个成员,就像外部类的成员方法一样,所以内部类有权限访问外部类的所有成员,包括private的。 (2).内部类不能访问外部类方法中的局部变量,除非变量是final的(一般发...

JAVA 方法内部类为何只能访问外部final类型变量

所谓“局部内部类”就是在对象的方法成员内部定义的类。而方法中的类,访问同一个方法中的局部变量,却必须要加上一个final。原因是编译程序实现上的困难:内部类对象的生命周期会超过局部变量的生命期。局部变...

为什么匿名内部类参数必须为final类型

本文由广州疯狂软件java培训分享:   基础语法:如果定义一个匿名内部类,并且希望它使用一个在其外部定的对象,那么编译器会要求其参数引用是final的。   1.匿名内部类肯定是局部内部类(在一...

java笔记(四)[java中的import关键词&java中的javadoc用法及注释说明&java中的final关键字&java中的内部类详解]

1、 • import关键词的使用除了导入包外还可以导入静态方法和静态成员变量 2、 • 关于使用/** */生成javadoc的方法,在commend window 中转移到java文件的目录下,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:内部类static ,final
举报原因:
原因补充:

(最多只允许输入30个字)