老师你好,问个问题

老师你好,问个问题

老师想问一下呀,关于普通内部类和静态内部类,如果访问修饰符设为private,我肯定是不能在类外通过new外部类.new内部类进行访问类内方法,但是可不可以通过外部类的方法(get return new 内部类),在类外通过访问该外部类方法来实现内部类成员的调用?

另一个问题就是关于方法内部类和匿名内部类,两个内部类都是不允许被调用,那么方法内部类中的访问修饰符有何意义?可不可以设为默认?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,

1、对于第一个问题,普通内部类和静态内部类,如果访问修饰符设为private,则表示该类是私有的,外部是不可见的,所以也无法通过外部类方法获取到 内部类对象的,如:

http://img1.sycdn.imooc.com//climg/5de08bd409493b1a05010418.jpg

通过get()方法获取内部类对象,报错,表示该内部类是不可以见的,不能被解析为类型。如:

http://img1.sycdn.imooc.com//climg/5de08bf909a136a604210137.jpg

2、对于方法内部类成员的访问修饰符可以设为默认的访问修饰符,因为直接在方法内部类中返回内部类的对象,并调用方法等。

而匿名内部类,在使用时有个前提条件:必须继承一个父类或实现一个接口或者抽象类。所以对于父类需要该方法的修饰符对于子类是可见的才可以被继承和访问到。而一个接口或者抽象类的方法的默认修饰符是public,所以在实现时也同样是public哦~

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 慕标8012353 提问者 #1
    第一个回答我可不可以理解成普通内部类类声明前的访问修饰符是该内部类实际能被访问到的范围? 第二个:由于方法内部类是只能在方法内使用,所以使用默认的访问修饰符就能满足该内部类的所有调用需求 第三个:重写方法的访问范围必须大于等于原方法的访问范围,对于非重写方法如属性,常量,普通方法等,由于仅调用一次的特殊性,可设置为默认访问修饰符
    2019-11-30 12:46:42
  • 好帮手慕酷酷 回复 提问者 慕标8012353 #2
    同学你好,你的理解是正确的。如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
    2019-11-30 13:02:08
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师