匿名内部类可以访问private_郑州Java学习入门之内部类与匿名类

a5599da65437bafccbe7308b9d0879ef.png

Java是一门面向对象编程语言,具有简单易用、功能强大的特点,是目前互联网行业应用最广泛的编程语言之一。很多同学反映在学习Java时常常被内部类和匿名类搞晕,接下来千锋小编分享的郑州Java学习入门课程就给大家梳理一下内部类与匿名类的相关知识。

内部类:

可以将一个类的定义放在里另一个类的内部,这就是内部类。广义上我们将内部类分为四种:成员内部类、静态内部类、局部(方法)内部类、匿名内部类。

在成员内部类中要注意两点:1)成员内部类中不能存在任何static的变量和方法,但是变量可以被static final修饰,主要是因为final类型在编译期间jvm有优化,常量池会维护这些变量;2)成员内部类是依附于外围类的,所以只有先创建了外围类才能够创建内部类。

方法内部类定义在外部类的方法中,局部内部类和成员内部类基本一致,只是它们的作用域不同,方法内部类只能在该方法中被使用,出了该方法就会失效。因此方法内部类不能使用访问控制符和static修饰符。

匿名内部类是一个没有名字的方法内部类,它符合方法内部类的所有约束。在使用匿名内部类的过程中,我们需要注意这几点:1)使用匿名内部类时,我们必须是继承一个类或者实现一个接口,但是两者不可兼得;2)匿名内部类不能定义构造函数;3)匿名内部类中不能存在任何的静态成员变量和静态方法;4)局部内部类的所有限制同样对匿名内部类生效;5)匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法。

关键字static可以修饰成员变量、方法、代码块,其实它还可以修饰内部类,使用static修饰的内部类我们称之为静态嵌套类。静态嵌套类的创建是不需要依赖于外围类,可以直接创建。静态嵌套类不可以使用任何外围类的非static成员变量和方法,而内部类(即为非静态嵌套类)则都可以。

2b1c9312d8ef3fbfba27f8d18d801486.png

匿名类:

Java匿名类很像局部类或内联类,只是没有名字。我们可以利用匿名类,同时定义并实例化一个类,但只有局部类仅被使用一次时才能这么做。匿名类不能有显式定义的构造函数,相反,每个匿名类都隐含地定义了一个匿名构造函数。

匿名类的用途:

更清晰的项目结构:通常我们在需要随时改变某个类的某些方法的实现时使用匿名类。这样做就不需要在项目中添加新的*.java文件来定义顶层类了。特别是在顶层类只被使用一次时,这种方法非常好用。

UI事件监听器:在图形界面的应用程序中,匿名类最常见的用途就是创建各种事件处理器。

创建匿名类有两种方法:1)扩展已有的类(可以是抽象类,也可以是具体类)。2)创建接口。

匿名类知识点:

1)创建匿名类时可以使用任何构造方法。

2)匿名类可以扩展顶层类并实现抽象类或接口,所以访问控制的规则依然适用。我们可以访问protected变量,而改成private就不能访问了。

3)匿名类中不能定义静态初始化方法或成员接口。

4)匿名类可以有静态成员变量,但它们必须是常量。

如果你想了解更多Java学习教程资料,可以关注“千锋郑州”微信公众号,定期发布技术热点分析文章。你也可以来千锋郑州申请两周免费试听,亲身体验教学效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值