当前位置:网站首页>内部类--看这篇就懂啦~
内部类--看这篇就懂啦~
2022-07-27 05:39:00 【mmmenxj】
1.try( 声明AutoCloseable接口对象,会自动调用close){
//这里写可能出现异常的代码
//若真的出现异常,默认由JVM构造一个异常对象,传递给程序,由catech捕获异常对象
}catch(FileNotFoundException e){}
}catch(IOEException e){}//输入输出流
}catch(Exception e){}//空指针异常
假设此时文件不存在,
当JVM出现异常时。JVM只会创建一个异常对象,catch捕获的时候就会选择最接近这个异常对象类型的catch段捕获。
finally{无论是否有异常都会执行的代码块,进行资源的释放处理,如文件关闭等}
免检异常(非受查异常):不需要强制进行异常处理的异常
Error 和RuntimeException及子类都属于免检异常,空指针,类型转换,数组越界
必检异常(受查异常):
除了免检异常以外的都是必检异常,IOEException
throw:方法中人为产生异常对象,相当于此处有异常产生,若是必检异常,此处就要显示处理
throws:用在方法声明上,明确表示该方法可能会产生的异常,但是在本方法中不处理
内部类
1.成员内部类:直接定义在类中,不加static定义的内部类,成员方法或属性
成员内部类必须依赖外部类的存在而存在,必须先有外部类对象才能产生成员内部类。
成员内部类对象的产生
1>外部类的内部:语法就和普通类一样
Inner in = new Inner();
2>外部类的外部:前提是内部类对于外部的这个类是可见的public
Outter.Inner in = new Outter().new Inner();
ps:new Outter产生了外部类对象,然后通过此对象来构造内部类对象,当产生内部类对象时,构造这个内部类的外部对象就会被编译器传入内部类。
2.内部类和外部类可以方便的访问彼此的私有域
内部类访问外部类的私有域直接访问(内部类中隐藏了一个外部类的对象)
public class Outter {
private String msg = "outter类中的msg属性";
//对外部完全隐藏,只是在类的内部来使用
class Inner{
private int num = 10;
private String msg = "内部类中的msg属性";
public void test(){
//直接访问外部类的msg属性
//此处直接访问了外部类的私有成员变量msg,成员变量必须通过对象访问
System.out.println(msg);
System.out.println(Outter.this.msg);//外部类传入的msg
System.out.println(Outter.this);
}
}
public void fun(){
Inner inner = new Inner();
//通过内部类对象访问内部类的私有属性
inner.test();
}
public static void main(String[] args) {
Outter outter = new Outter();
outter.fun();
}
}
运行结果如下:

外部类要访问内部类的私有域,不想通过对象来访问。
成员方法能访问静态域,不能定义静态变量
对于成员内部类来说,能否定义一个静态变量?
不能,成员内部类必须要依赖于外部类,若成员内部类有静态属性,没有外部类对象也能访问了。

对于外部类来说,能否在外部类的静态方法中使用成员内部类?== 相当于在静态方法中调用成员变量 肯定不行!

2.静态内部类
定义在类中,使用static 修饰的内部类就是静态内部类
静态内部类不需要依赖外部类对象
外部类的内部:

为何成员方法和静态方法都能创建成员内部类的对象?
类比类中静态变量,没有类的对象就能使用。类的静态方法可以调用,成员方法更可以。
内部类的外部:
外部类.内部类 引用= new 外部类.内部类();
此时不需要产生外部类对象
静态内部类就是一个普通的类,只是套在了一个类的内部而已。
总结:
成员内部类可以访问外部类的成员域和静态域,但不能拥有静态域
静态内部类可以拥有成员域,但不能直接访问外部类的成员域,可以通过new一个外部类对象来访问,静态域随便访问。
3.方法内部类(局部内部类)-- 类比局部变量
直接定义在方法内部的类,不允许使用任何访问修饰符,对外部完全隐藏(出了这个类就没了)
1>不能用任何访问修饰符
2>不能用static修饰
3>如果要用方法的参数,它默认用fianl修饰了,所以不能修改大小
4.匿名内部类(lambda表达式的前身,函数式编程)99%用在方法传参过程
匿名内部类是方法内部类的特殊版本,直接不写类名称。
匿名内部类遵从方法内部类的所有要求,匿名内部类默认继承一个类(普通类和抽象类都可以,一般是继承抽象类或者实现接口)或实现一个接口
内部类的设计不是我们现在的首选,写数据结构代码如链表,Node就是典型的内部类设计。
边栏推荐
- 网易云信亮相 GIAC 全球互联网架构大会,解密新一代音视频架构在元宇宙场景的实践...
- The issuing process of individual developers applying for code signing certificates
- Basic concepts of program, process, thread, coprocess, single thread and multi thread
- 基于SSM图书借阅管理系统
- Consideration on how the covariance of Kalman filter affects the tracking effect of deepsort
- Leetcode series (I): buying and selling stocks
- Error in running code: libboost_ filesystem.so.1.58.0: cannot open shared object file: No such file or directory
- Analysis of pix2pix principle
- DNA coupled PbSe quantum dots | near infrared lead selenide PbSe quantum dots modified DNA | PbSe DNA QDs
- [unity URP] the code obtains the universalrendererdata of the current URP configuration and dynamically adds the rendererfeature
猜你喜欢

【12】 Understand the circuit: from telegraph to gate circuit, how can we "send messages from thousands of miles"?

How to learn C language? This article gives you the complete answer

关于卡尔曼滤波的协方差如何影响deepsort的跟踪效果的考虑

Visual horizontal topic bug1:filenotfounderror: could not find module 'mvcameracontrol dll‘ (or one of it

Watermelon book learning Chapter 5 --- neural network

手机上也能训练BERT和ResNet了?!

DNA (deoxyribonucleic acid) supply | carbon nanotube nucleic acid loaded dna/rna material | dna/rna nucleic acid modified magnetic nanoparticles

Analysis of strong tennis cup 2021 PWN competition -- babypwn

Norms of vectors and matrices

MangoDB
随机推荐
DNA modified noble metal nanoparticles | DNA modified gold nanoparticles (scientific research level)
Watermelon book chapter 3 - linear model learning notes
DataScience:数据生成之在原始数据上添加小量噪声(可自定义噪声)进而实现构造新数据(dataframe格式数据存储案例)
TS learning (VIII): classes in TS
R2live code learning record (3): radar feature extraction
deepsort源码解读(六)
Analysis of strong tennis cup 2021 PWN competition -- babypwn
jest单测样式问题【identity-obj-proxy】npm包
Qi Yue: thiol modified oligodna | DNA modified cdte/cds core-shell quantum dots | DNA coupled indium arsenide InAs quantum dots InAs DNA QDs
Problems related to pytorch to onnx
Introduction to the official functions of easyrecovery14 data recovery software
Vscode connection remote server development
Error in running code: libboost_ filesystem.so.1.58.0: cannot open shared object file: No such file or directory
C语言怎么学?这篇文章给你完整答案
脱氧核糖核酸DNA修饰氧化锌|DNA修饰纳米金颗粒|DNA偶联修饰碳纳米材料
DNA科研实验应用|环糊精修饰核酸CD-RNA/DNA|环糊精核酸探针/量子点核酸探针
含有偶氮苯单体的肽核酸寡聚体(NH2-TNT4,N-PNAs)齐岳生物定制
VIVO应用市场APP上架总结
脱氧核糖核酸DNA改性近红外二区砷化镓GaAs量子点|GaAs-DNA QDs|DNA修饰GaAs量子点
PNA peptide nucleic acid modified peptide suc Tyr Leu Val PNA | suc ala Pro Phe PNA 11