静态内部类的总结

文章地址:https://www.toutiao.com/item/6389164608854163969/

 

在java中能用static修饰的类叫做静态内部类,静态类在平常也会比较少遇到,那么静态类和非静态内部类有什么不同呢?下面就来介绍一下,首先介绍下静态内部类:

静态内部类的总结

静态内部类

这里构造一个人的对象(内部类的名字写的是NestedClass但是可以认为是Person的对象),而对象里面是人的家庭信息,比较符合现实生活的场景。这里有个注意的地方就是一般推荐是要重写toString方法,如果不重写toString方法会出现什么结果呢?

静态内部类的总结

未重写toString方法

可以看到显示的是对象的hasCode即内存地址,如果一个对象不重写toString返回的就是内存地址的值,所以在对象中一般建议都是要重写toString方法。下面是重写toString方法的结果:

静态内部类的总结

重写toString

从测试的类中我们可以看到,在类中实例化了人的类,然后在设置静态内部类的值,那么,这就跟日常生活很像了,要记录一个人的信息,先写进人的名字,然后再设置人的信息。

那么,使用静态内部类有什么好处呢?

  1. 可以提高封装性,面对对象的三个特征就是封装、继承、多态,从代码上来看,静态内部类属于外部类的子行为或者子属性,两者保持着一定的联系。像上面的Home类我们很容易就可以理解是Person的Home信息,提高了代码的可读性。

  2. 形似内部,神似外部,静态类虽然存在于外部类中,但是他是可以脱离外部类存在,就是在外面的test类中依旧可以使用new Home()声明一个Home对象,只是需要导入NestedClass.Home而已

说到这里那么非静态内部类和静态内部类有什么区别呢?

  1. 静态成员和方法的定义问题:静态成员和静态方法只有静态内部类才能创建,而非静态的内部类创建静态的成员或者方法的时候是会报错的,编译通不过。

  2. 成员和方法的引用问题:非静态内部类能在内部类中随意引用外部类的属性和方法,即使是private方法和属性也是可以引用的,而在静态内部类中,,只能引用外部类的静态成员或者方法。所以因为这个原因导致静态内部类的应用不是很广泛。

  3. 实例的绑定问题:静态内部类不需要依附在外部类的实例中,而非静态内部类需要依附在外部类的实例中,只有实例化了外部类才能使用非静态内部类。

今天比较忙,就先更这么多了,具体的例子大家可以自己试试~~谢谢大家的收看~喜欢的关注一波~

附上今天的十个单词:

start 开始

length 长度

equals 等于

ignore 忽略

compare 比较

sub 提取

concat 连接

replace 替换

trim 整理

buffer 缓冲器

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值