java学习day14面向对象(七)

关键字,内部类

  • final关键字
    • final的意义
    • 修饰的内容
  • static关键字
    • 静态类成员的特性和使用
    • 成员方法
    • 静态代码块
  • 内部类
    • java中使用内部类
    • 内部类的作用:
    • 文件解析
    • 内部类的分类
      • 成员内部类
      • 局部内部类
      • 静态内部类
      • 匿名内部类

final关键字

final的意义

最终的,不可修改的

修饰的内容

①修饰变量:为常量,不能被更改,必须初始化值
②修饰方法:不能够被重写,只能被调用
③修饰类:不能被继承
注意:final可以和static一起使用

static关键字

静态类成员的特性和使用

针对一个类所有对象的共性属性,Java采用static成员完成统一调用
①static 在变量或方法之前,表明它们是属于类的,称为类方法(静态方法)或类变量(静态变量)。若无static修饰,则是实例方法和实例变量
②static不是放在堆中,是放在方法区(常量,静态成员,类的信息)
③静态成员变量的作用域在类的内部,生命周期贯穿整个程序
静态成员有主动和被动的来加载到方法区
④可以通过类名访问静态成员
⑤可以和final关键字一起使用 静态常量
注意:静态常量命名 所有的字母大写 可以加下划线

成员方法

①静态方法
②静态只能调用静态,非静态可以调用静态
③不能使用this关键字

静态代码块

内部类

java中使用内部类

内部类是Java独有的一种语法结构,即在一个类的内部定义另一个类,此时,内部类就成为外部类中的成员,访问权限遵循类成员的访问权限机制(无限制),可以是public、protected、缺省和private
内部类可以很方便地访问外部类中的其它成员

内部类的作用:

完善多重继承
形成闭包:自动拥有一个指向此外围类对象的引用,操作所有的成员、

文件解析

对于一个名为OuterClass的外围类和一个名为InnerClass的内部类,在编译成功后,会出现这样两个class文件:OuterClass.class和OuterClass$InnerClass.class

内部类的分类

成员内部类

成员内部类中不能存在任何static的变量和方法
解释:
在外部类加载的时候,不会加载成员内部类
Static类型的属性和方法,在类加载的时候会放在内存中
要使用某个类的static属性或者方法,这个类必须加载
成员内部类是依附于外围类的,所以只有先创建了外围类才能够创建内部类。

局部内部类

位置:方法和作用域内的
作用:解决比较复杂的问题
核心:局部内部类可以直接操作外部类的成员变量,但是对于方法的临时变量(包括 方法的参数,要求是final常量才能操作
不写还是final为什么?
生命周期不同, 类的生命周期和方法的生命周期不同,方法是调用开始到执行结束,类的生命周期是创建,Gc回收,方法已经结束 ,局部变量会跟着方法被回收,x回收,别人怎么办。
Final修饰 进行了一个copy ,将局部变量的x进行复制一个值给与局部内部的,成为他的成员变量

静态内部类

 在成员内部类的基础上加上了static关键字
  1. 它的创建是不需要依赖于外部类的
  2. 它不能使用任何外部类的非static成员变量和方法
  3. 和成员内部类不同,static内部类能够声明static的成员

匿名内部类

必须继承一个父类或者一个接口
没有构造器

你可能感兴趣的:(java)