1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Java的内部类详解(成员内部类 静态内部类 局部内部类 匿名内部类)

Java的内部类详解(成员内部类 静态内部类 局部内部类 匿名内部类)

时间:2018-09-05 18:27:05

相关推荐

Java的内部类详解(成员内部类 静态内部类 局部内部类 匿名内部类)

Java知识点总结:想看的可以从这里进入

目录

2.2.4、 内部类1、成员内部类2、静态内部类3、局部内部类4、匿名内部类

2.2.4、 内部类

一个类定义在另一个类内,那么这个类就是一个内部类,比如:在类A中定义一个类B,B就是内部类,而B可以当做A的一个成员看待。从种类上说,内部类可以分为四类:成员内部类、静态内部类、匿名内部类、局部内部类。

1、成员内部类

成员内部类:最普通的一种内部类,定义在类中方法外的一个普通的类(没有static修饰),可用任意的修饰符修饰

内部类可以访问外部类所有的属性和方法(包括私有)。但是外部类要访问成员内部类的属性和方法,必须要先实例化内部类

在其他的类中使用内部类时,需要先有外部类的对象(成员内部类是依附外部类而存在的)

关于在成员内部类中使用静态方法和属性的问题: 关于JDK16后可以在非静态内部类中使用静态属性和方法的说明

在 jdk16之前的版本,不能再非静态成员内部类中定义静态的属性和方法

在 jdk Java16之后的版本是可以定义静态方法和属性的

当外部类变量与方法和内部类的同名时,内部类默认访问自己的成员变量或方法,而要引用外部变量时要加类名.this(类名.this.变量名、类名.this.方法名())

2、静态内部类

静态内部类:静态内部类就是在成员内部类加了一个 static 关键字,静态内部类就像外部类的一个静态成员一样

静态内部类不能直接访问外部类的非静态成员,但可以通过创建外部类的对象访问

外部类的静态成员与内部类的成员名称相同,可通过(类名.静态成员) 访问外部类的静态成员

静态内部类创建对象无需依赖外部类,可以直接创建

3、局部内部类

局部内部类:使用的比较少,声明在方法体或一段代码块的内部。

仅在定义的方法、代码块内部使用,其他地方无法使用(定义在方法内则只能在方法中使用,定义在for循环中则只能在for循环中使用),作用范围类似于局部变量

局部内部类不可使用权限修饰符 静态(static)修饰符进行修,但可以使用final 或 abstract修饰。

局部内部类可以直接访问方法中的属性

局部内部类创建对象要在方法内部、局部内部类的外部声明。

可以访问外部类的的属性和方法(包括私有的)。

4、匿名内部类

匿名内部类:很常用。它是一种没有名字的内部类,只能使用一次,通常是某个类在实现时只会使用一次,所以为了简化,不需要去专门写一个实现类,而是直接使用内部类完成。

匿名内部类不能定义任何静态成员、方法和类,只能创建匿名内部类的一个实例。一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。在匿名内部类中可以使用外部类的属性,但是外部类却不能使用匿名内部类中定义的属性,匿名内部类没有名字,因此在外部类中无法获取这个类的类名,也就无法得到属性信息。(只能有一个对象)匿名内部类必须继承父类或实现接口,使用多态形式引用

new 接口/类名(参数1, 参数2...){实现方法1(){}实现方法2(){}......};

在线程的时候通常就喜欢使用匿名内部类实现

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。