java温习*(23):关于内部类的常见问题

1、方法内部类中为什么不能有静态成员?

由于static类型的属性和方法,在类加载的时候就会存在于内存中。因此要想使用某个类的static属性和方法,那么这个类必须要先加载到虚拟机中。但是,普通的方法内部类并不会随外部类一起加载,只有在实例化外部类之后才会加载。因此,如果在外部类并没有实例化,内部类还没有加载的时候,直接调用内部类的静态成员或方法,这明显是矛盾的。所以普通的方法内部类不能有静态成员变量或静态方法。

2**、为什么方法中返回值是Object,返回的是方法调用还不报错?**//img3.mukewang.com/5eb530900001c82c04500234.jpg

这里并不是返回方法调用,而是返回内部类Heart对象的beat方法的返回结果,整个方法最后一句的执行顺序是:1、通过new实例化内部类对象
2、调用其beat方法
3、将beat方法返回值通过return带回,也就是此时的Object返回值

此处,也因为Object是Java中的根类,基于向上转型的原则,可以返回具体的子类String类型的对象。

3、什么是方法签名?

在Java中,方法签名着重指代:方法名和参数列表(包括:参数的类型、个数以及顺序)。

譬如:下图所示代码中方法签名即为:

exam(String,Teacher,double),可不考虑返回值与访问修饰符

//img2.mukewang.com/5eb53097000126bf05530230.jpg

4、课程中如下图代码,为什么要写getRead( )方法,都直接写main方法里不行么?

//img1.mukewang.com/5eb5309c0001900303930077.jpg

将功能拆分成方法,而不是都写死在main方法中,一方面可以多角度体现不同方式对象传参的应用;另一方面实际开发中也更推荐按功能合理拆分,以便于后续扩展维护。

5、前面不是讲过接口和抽象类不能直接实例化,为什么课程中(如下图1,2)可以这么写?

//img.mukewang.com/5eb530a1000172b402920090.jpg(图1)

//img3.mukewang.com/5eb530a70001fefe04730203.jpg​(图2)

此处并不是实例化Person,大家可以理解为我们是创建了一个没有名字的Person类型的子类对象,如下图3中代码与图2中功能是一致的。

//img1.mukewang.com/5eb530ae0001e78304460409.jpg(图3)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值