大一暑假实习day5_2

目录

1.导包:

 2.

3.

4.

5.权限修饰符:

 6.代码块:

 7.抽象类

 8.接口

 9.继承树和接口怎么划分,思路很关键,要简洁并且提高效率

 10.新特性拓展:

 11.jdk9

 12.接口多态!

 13.适配器:

 14.内部类

 (1)成员内部类

 (2)静态内部类

 (3)局部内部类(和局部变量性质类似,可以用final修饰不可用public修饰)


1.导包:

 2.

快捷键,shift+fn+f6可以选中你鼠标点击的变量并且选中所有出现这个变量的地方,统一修改。

3.

alt+回车,自动导包;ctrl + shift + u 变大写

4.

final:

 

增强可读性:

5.权限修饰符:

 

 6.代码块:

(1)局部代码块:提前结束局部变量生命周期,用完就回收,现在不常用

(2)构造代码块:也淘汰了,不灵活

 所以现在一般改进为:

 (3)

 

 应用于数据初始化:

 写在static里面也防止了这个方法被反复调用导致一直new

 7.抽象类

 

 抽象类构造方法作用:

 

 8.接口

(1)区别与抽象类

 (2)格式:

 

 (3)特点:

 (4)利用内存分析工具:黑马程序员Java零基础视频教程(2022最新Java入门,含斯坦福大学练习题+力扣算法题+大厂java面试题)_哔哩哔哩_bilibili

 (5)多个接口有重名的的抽象方法,我们就重写一次就可以

 (6)小结:

 9.继承树和接口怎么划分,思路很关键,要简洁并且提高效率

 10.新特性拓展:

 

 

 所以如果show是静态的,那么实现类里面的show不叫重写,只能正好名字一样

可以通过infer.show(),inferImpl.show()分别调用

 11.jdk9

 

 12.接口多态!

 13.适配器:

 InterAdapter作为过渡是空实现

interImpl实现类改成继承interadapter,然后需要哪个方法就重写哪个。

 14.内部类

 (1)成员内部类

 

 

 权限和上面一样,private<默认<protected<public


 

 内部类若是私有的,要是需要获得它的话,要么把private改了,要么就像下图一样,通过方法来返回:

 其实迭代器内部原码也是这样操作的:

 下面考虑一下重名:

若没有重名:

  显然得到的是箭头指向的a 

 否则需要这样子:(和继承差不多,只有那个super换了)

 内存分析呢,是这样的:依旧从栈,堆,方法区分析

先是进入标红这一行,那就把outer,inner类的字节码文件先加载,其中,outer和Inner是分开的

可以看下图:(字节码文件在Out文件中)

 这就是编译的结果,是分开的

那这两个链式的New在堆区是这样的:

 

通过内存工具可以看到,内部类的局部变量:是有这么一个指针的

 

总结: 

 (2)静态内部类

 

 在静态类内部想要用外部类的非静态成员,必须要这样

 

注意上图,用对象调用静态方法可以调,但是我们不提倡,所以它都没给提示。

用类名调用: 

 

 (3)局部内部类(和局部变量性质类似,可以用final修饰不可用public修饰)

 用法:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值