java内部类存储方式_java内部类总结 - 卡尔加里路的个人空间 - OSCHINA - 中文开源技术交流社区...

内部类

内部类就是类中的类

内部类分类:

成员

局部

匿名

静态

成员内部类

定义:定义在外部类成员位置的类,用成员修饰符修饰的一个类

使用成员内部类:根据外部类对象使用,注意成员内部类不能定义静态 ,除非是静态的常量(由static final 修饰)

//创建内部类对象

public class Outer1 {

//这是一个成员内部对象

class One{

//内部对象的方法

void t() {

System.out.println("我是一个内部类");

}

}

public static void main(String[] args) {

// 在主方法中创建内部类对象方法一

Outer1 otOuter1=new Outer1();

One on=otOuter1. new One();

// 在主方法中创建内部类对象方法二

One on=new Outer1().new One();

on.t();

}

public void show() {

//在外部方法中创建内部类对象

One one=new One();

one.t();

}

}

注意:如外部类,内部类,内部类方法三者都有一个变量a ,在内部类中直接返回a是值内部类方法中的a(就近原则)this.a ,返回的是内部类的成员变量a ,要返回外部类的变量a 需要用外部类名.this.a

局部内部类

定义:定义在外部类方法中的内部类,局部内部类的左右域只在方法内,只能在方法内床架对象

注意,局部内部类的变量只能用final修饰,jdk1.8 默认省略final

静态内部类

定义:由static 修饰的类,静态类中可以写静态方法,静态方法只能写在静态类中

特点:静态类中的静态方法与静态变量,可以直接通过类名. 的方式直接在外部调用

注意: 静态类中可以有成员,调用时要遵守静态原则,静态方法不能直接调用成员属性,

需要通过对象调用成员属性 调用外部成员需要用对象.的方式调用

匿名内部类

定义:没有名字的内部类

前提:匿名内部类必须实现一个接口/父类,作为接口/父类的实现存在

// 匿名内部类

new 类名(){类体}

使用: 在使用时可以使用父类/接口类型 接收这个匿名内部类(接口多态)

// 匿名内部类

// 接口(父类类型) 接收名称= new 类名(){类体}

// 接收名称.方法();

主要:调用的方法是对父类/接口实现的方法

Lambda 由jdk1.8提供

表示方式:()->{方法体}

// '()':表示需要重写的方法参数列表

// '->':Lambda 符号,具有推导上下文的作用

// '{}':存放需要实现的方法的方法体

前提:只使用接口类型 的内部类写法,且接口只有一个方法

测试是否为函数式接口:@FunctionalInterface

写法:

//标准写法 下方‘ S ’ 接收匿名类地址的 变量

s=(数据类型 参数)->{方法体};

//只存在一句方法体时

s=(数据类型 参数)->方法体;

//参数的数据类型可以不写

s=(参数)->{方法体};

//只有一个参数

s=参数->方法体;

//方法有返回值

s=(数据类型 参数)->{方法体 retuen 返回值 ;};

//当语句体只有返回值没有方法体时

s=(数据类型 参数)->retuen 返回值 ;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值