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

static、final修饰符、内部类

static修饰符: final修饰符,内部类
  • JerryBurning
  • JerryBurning
  • 2015年07月20日 20:50
  • 1823

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

(1).内部类是外部类的一个成员,就像外部类的成员方法一样,所以内部类有权限访问外部类的所有成员,包括private的。 (2).内部类不能访问外部类方法中的局部变量,除非变量是final的(一般发...
  • cpp597455873
  • cpp597455873
  • 2015年05月31日 12:50
  • 1372

面向对象(二)(static,.final,抽象类,接口,内部类)

1.static关键字         Java类中static可修饰成员变量,方法,构造器,初始化块,内部类(接口和枚举),被static修饰的成员是类的成员,不是某一个单例的。当系统第一次准备使用...
  • dajiahuooo
  • dajiahuooo
  • 2015年07月22日 11:42
  • 261

《为什么非静态内部类中不能有static属性的变量,却可以有static final属性的变量?》

每当我们翻阅有关Java的入门书籍,进入关于内部类的章节时,我们经常可以看到某某书上写道: ——非静态实名内部类(成员内部类)中不能含有static修饰的变量,但是可以含有stat...
  • WuchangI
  • WuchangI
  • 2018年01月27日 20:07
  • 168

内部类中引用的变量必须要声明为final的原因

Cannot refer to a non-final variable mylis inside an inner class defined in a different method ...
  • lll350203041
  • lll350203041
  • 2014年02月19日 17:57
  • 1986

Java内部类访问外部对象为什么必须是final的呢?

为什么必须是final的呢? 一个谜团 如果你用过类似guava这种“伪函数式编程”风格的library的话,那下面这种风格的代码对你来说应该不陌生: 1 2...
  • WALLEZhe
  • WALLEZhe
  • 2016年08月16日 15:12
  • 1495

成员内部类不能含有static的变量和方法

原文:http://zhidao.baidu.com/link?url=lNZTPLtTrzTHZh9r74lwCwpDgocKQZgBcYnZMbAh0hbYQMVyY8O6nFPskd68ovO6...
  • gongda2014306
  • gongda2014306
  • 2016年09月20日 17:12
  • 187

内部类学习(五)--静态内部类(Static Inner Class)

这里介绍最后一种比较特殊的内部类――静态内部类(Static Inner Class),即在内部类的前面增加了static修饰符(modifier)。注意,仅仅只有内部类能够被声明为static类型,...
  • CMTobby
  • CMTobby
  • 2006年09月29日 09:03
  • 6585

static、final、static final 用法

1.使用范围:类、方法、变量。 2.区别和联系: 2.1.static 含义:静态的,被 static 修饰的方法和属性只属于类不属于类的任何对象。 2.2.static 用法: 2....
  • tengdazhang770960436
  • tengdazhang770960436
  • 2014年05月06日 19:20
  • 28953

Java static内部类疑惑

转自:用static关键字修饰类  Java里面static一般用来修饰成员变量或函数。但有一种特殊用法是用static修饰内部类,普通类是不允许声明为静态的,只有内部类才可以。被sta...
  • u013427969
  • u013427969
  • 2016年05月28日 08:55
  • 1712
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:内部类static ,final
举报原因:
原因补充:

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