System.out.println("num = " + num);
}
}
}
package TEXT;
public class Demo {
public static void main(String[] args) {
Outer.Inner oi = new Outer().new Inner();
oi.inShow();
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/6c54a5715bf54f3c97ea93def1de91b8.png)
[]( )三、成员内部类
==========================================================================
_**按照内部类在类中定义的位置不同,可以分成如下两种形式**_
* 在类的成员位置:成员内部类
* 在类的局部位置:局部内部类
_**成员内部类,外界如何创建使用呢?**_
* 格式:**外部类名.内部类名 对象名 = 外部类对象.内部类对象**
* 范例:Outer.Inner oi = new Outer( ).new Inner;
> 像上面代码这样把内部类定义成public是不常见的,一般都弄成私有的,因此应该如下修改
package TEXT;
public class Outer {
//外部类私有变量
private int num = 20;
//内部类
private class Inner{
public void inShow(){
System.out.println("内部类show方法");
System.out.println("num = " + num);
}
}
public void show(){
Inner i = new Inner();
i.inShow();
}
}
package TEXT;
public class Demo {
public static void main(String[] args) {
Outer o = new Outer();
o.show();
}
}
[]( )四、局部内部类
==========================================================================
> 1. **局部内部类**就是在**方法中定义的类**,所以外部是无法直接使用的,需要在方法内部创建对象并使用
> 2. 该类可以直接访问外部类的成员,也可以访问方法内的局部变量
package TEXT;
public class Outer {
//外部类私有变量
private int num = 20;
public void show(){
//局部内部类
class Inner{
public void inshow(){
System.out.println("内部类show");
System.out.println("num = " + num);
}
}
//调用具备内部类
Inner i = new Inner();
i.inshow();
}
}
package TEXT;
public class Demo {
public static void main(String[] args) {
Outer o = new Outer();
o.show();
}
}
[]( )五、匿名内部类
==========================================================================
前提:存在一个类或者接口,这里的类可以是具体也可以是抽象类
本质:是一个继承了该类或者实现了该类接口的子类匿名对象
![在这里插入图片描述](https://img-blog.csdnimg.cn/ff21c53569854eb1a662350a7fe01240.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MTE0NjMyOQ==,size_16,color_FFFFFF,t_70)
package TEXT;
public class Outer {
public void show(){
//调用匿名内部类中show方法的方法如下
/* //一、该本质是一个对象,因此可以直接.show
new Inter(){
@Override
public void show() {
System.out.println("show方法");
}
}.show();*/
//二、创建一个对象
Inter i = new Inter(){
@Override
public void show() {
System.out.println("show方法");
}
};
i.show();
}
}
package TEXT;
/*
接口
*/
public interface Inter {
void show();
}
package TEXT;
/*
测试类
*/
public class Demo {
public static void main(String[] args) {
Outer o = new Outer();
o.show();
}
}
[]( )六、匿名内部类的应用
-----------------------------------------------------------------------------
> 在开发中我们难免会用一些只用一次的对象,如果这些对象我们只用一次但却把他们创建成JAVA类,再在测试类中生成该对象,这会是个不太明智的选择,但是当我们应用匿名内部类,就能更好解决这个问题
package TEXT;
/*
接口
*/
public interface Jumpping {
void jump();
}
最后
如果觉得本文对你有帮助的话,不妨给我点个赞,关注一下吧!
了解详情https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB
用一些只用一次的对象,如果这些对象我们只用一次但却把他们创建成JAVA类,再在测试类中生成该对象,这会是个不太明智的选择,但是当我们应用匿名内部类,就能更好解决这个问题
package TEXT;
/*
接口
*/
public interface Jumpping {
void jump();
}
### 最后
**如果觉得本文对你有帮助的话,不妨给我点个赞,关注一下吧!**
[外链图片转存中...(img-avpleFsx-1724335364749)]
[外链图片转存中...(img-ytsbtRKE-1724335364750)]
了解详情https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB