java 类 使用场景_几种Java内部类的使用场景

几种Java内部类的使用场景

发布时间:2020-04-24 09:38:02

来源:亿速云

阅读:213

作者:小新

今天小编给大家分享的是几种Java内部类的使用场景,相信很多人都不太了解,为了让大家更加了解Java内部类,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。

b7a66221345f754a802f846145cc4983.png

普通内部类

普通内部类主要有两个要点需要掌握

持有父类引用,故可以访问父类任何访问权限的变量、方法

内部类在父类外部的创建方式public class Main{

public static void main(String args[]){

Outer outer = new Outer();

//外部类外部创建内部类

Outer.Inner inner = outer.new Inner();

inner.method();

}

}

class Outer{

private String value = "OuterValue";

class Inner{

public void method(){

//持有父类引用,可以访问父类private变量value

System.out.println(value);

}

//利用.this关键字,可以返回父类对象引用

public Outer outerObject(){

return Outer.this;

}

}

}

方法内部类

直接定义在方法里面的内部类

享有方法同等的权限,访问外部类其他方法、成员变量。

可以访问该方法的参数,1.8以后,参数无需设置为final

享有同等方法局部变量的权限,可以访问定义在其前面的局部变量

只能在方法作用域中,访问方法内部类public class Main{

public static void main(String args[]){

Outer outer = new Outer();

outer.outerMethod("param");

}

}

class Outer{

public void outerMethod(String value){

class Inner {

public void innerMethod(){

//可以访问方法参数

//1.8以后,内部类访问的方法参数不必设置为final

System.out.println(value);

}

}

new Inner().innerMethod();

}

}

匿名内部类

匿名内部类其实是一个重点,也是我们经常会使用的知识点。

比如创建新线程public class Main{

public static void main(String args[]){

Thread a = new Thread(new Runnable(){

@Override

public void run(){

System.out.println("thread a is running;");

}

});

a.start();

}

}

上面的代码意思是创建一个实现了Runnable接口的匿名类对象,等同于下面代码,由于书写方便,我们经常使用第二种public class Main{

public static void main(String args[]){

Thread a = new Thread(new RunnableImp());

a.start();

}

static class RunnableImp implements Runnable{

@Override

public void run(){

System.out.println("thread a is running;");

}

}

}

静态内部类

记住以下两点

要创建静态内部类对象,并不需要外部类的对象(普通内部类需要)

不能从静态内部类中访问非静态的外部类方法或者成员变量public class Main{

Outer.Inner inner = new Outer.Inner();

}

class Outer{

private String ordValue;

private static String staValue;

static class Inner{

{

System.out.println(staValue);

//这句编译通不过

//System.out.println(ordValue);

}

}

}

关于几种Java内部类的使用场景就分享到这里了,希望以上内容可以对大家有一定的参考价值,可以学以致用。如果喜欢本篇文章,不妨把它分享出去让更多的人看到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值