final_权限修饰符_内部类

本文详细介绍了Java中的final关键字,包括它如何修饰类、方法、成员变量和局部变量,强调了final在修饰局部变量时与内部类的交互。此外,还探讨了权限修饰符如public、protected、默认和private的使用场景和注意事项。最后,文章讨论了内部类的分类,如成员内部类、局部内部类和匿名内部类,以及它们在访问外部变量时的规则和生命周期管理。
摘要由CSDN通过智能技术生成

final关键字

final的用法

修饰类 :不能被继承;

修饰方法:不能被覆盖重写:

修饰成员变量:同局部,并且必须手动赋值

修饰局部变量:基本数据类型值不能改变,引用数据类型地址值不能改变;

权限修饰符

区别

A. public      可以跨包访问
       B. protected 只能在同一个包当中访问,特殊情况下可以跨包访问,特殊情况是 父子关系(继承和实现)
       C. [default] 只能在同一个包当中访问
       D. private   只能在本类当中访问(私有的成员变量儿子无法访问,私有的成员方法儿子无法继承覆盖重写)

使用

A. 成员变量,推荐采用 private 私有化修饰,解决数据安全问题。提供对应的 getter 和 setter

B. 成员方法,推荐采用 public 目的是为了让其他类跨包的情况下,可以进行访问调用

C. 构造方法,推荐采用 public 目的是为了让其他类跨包的情况下,可以进行访问调用 创建对象

注意: 构造方法有一种情况下需要写成 private 的. 作为工具类使用的情况下写成私有的。
    想一想 java.util.Arrays 工具类  java.lang.Math 工具类.目的是为了不让你创建对象,采用类名称直接打点调用静态

内部类

成员内部类  创建对象的格式

外部类名称.内部类名称 对象名称 = new 外部类名称().new 内部类名称();

A. 外部类成员变量  Outer.this.name
       B. 内部类成员变量  this.name
       C. 内部类局部变量  name

局部内部类

把类写在 局部变量(方法当中的变量)所在的位置,叫做局部内部类

局部内部类访问外面的局部变量,为什么要加上 final 关键字?  "生命周期得到延长"
       主要是为了延长 局部变量的生命周期。分析:
       a. 局部内部类的对象存在于 堆内存当中,生命周期长
       b. 局部变量存在于 栈内存当中,生命周期短
       c. 如果没有 final 访问的时候, 可能生命周期短的就已经消失掉了,无法访问。
       d. 如果加上 final 访问的时候, 就可以随时访问。生命周期延长了。

匿名内部类

1. 匿名内部类的写法格式:
    new 接口名称/抽象类名称(){ .... }

2. 格式解释:
    上面的大括号当中就是匿名内部类。只不过我们可以采用多态转型(向上转型)变成父亲的对象。
    
3. 匿名对象和匿名内部类
    只要是匿名的东西,都是省略一些内容,都是只能使用1次。
    匿名对象是省略了对象名称,例如: new Student(); 只能调用1次
    匿名内部类省略了类名称,例如: new IAnimal(){ ...}; 

4. 匿名内部类的本质:
    匿名内部类实际上是 '接口的实现类' --> 子类
    根据多态的想法,站在父亲的角度看待问题,可以把 匿名内部类 当做爹 接口使用 --> 接口
    结论: 如果看到方法的参数是接口,毫不犹豫,调用方法的时候,就可以传入匿名内部类。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值