关闭

内部类static ,final

342人阅读 评论(0) 收藏 举报

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:71417次
    • 积分:1517
    • 等级:
    • 排名:千里之外
    • 原创:79篇
    • 转载:32篇
    • 译文:0篇
    • 评论:1条
    最新评论