内部类
Posted 雨晨漫步
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内部类相关的知识,希望对你有一定的参考价值。
在一个.java源文件中,只能定义一个类名与文件名完全一致的公开类,使用public class关键字来修饰。但在面向对象语言中,任何一个类都可以在内部定义另外一个类,前者为外部类,后者为内部类。内部类本身就是类的一个属性,与其他属性定义方式一致。比如,属性字段private static String str,由访问控制符、是否静态、类型、变量名组成,而内部类private static class Inner,也是按这样的顺序来定义的,类型可以为class、enum、甚至是interface,当然在内部类中定义接口是不推荐。内部类可以是静态和非静态的,它可以出现在属性定义、方法体和表达式中,甚至可以匿名出现,具体分为如下四种。
·静态内部类,如:static class StaticInnerClass;
·成员内部类,如:private class InstanceInnerClass;
·局部内部类,定义在方法或者表达式内部;
·匿名内部类,如:(new Thread()).start()。
如下是最精简的4种内部类定义方式:
点击查看代码
public class OuterClass
// 成员内部类
private class InstanceInnerClass
// 静态内部类
static class StaticInnerClass
public static void main(String[] args)
// 两个匿名内部类,分别对应图2-1所示的OuterClass$1和OuterClass$2
(new Thread()).start();
(new Thread()).start();
// 两个方法内部类,分别对应图2-1所示的OuterClass$1MethodClass1和
// OuterClass$1MethodClass2
class MethodClass1
class MethodClass2
点击查看代码
static class Node<K,V> implements Map.Entry<K,V>
final int hash;
final K key;
volatile V val;
volatile Node<K,V> next;
内部类之静态内部类
一.类内部类(静态内部类)定义:若使用static来修饰一个内部类,则这个内部类就属于外部类本身,就不属于外部类的某个对象(区别于非静态内部类)
二.静态内部类可以包含静态成员,也可以包含非静态成员;静态内部类的实例方法也不能访问外部类的实例成员
三.外部类虽然不能直接访问静态内部类的成员.但可以使用静态内部类的类名作为调用者来访问静态内部类的类成员,也可以使用静态内部类对象作为调用者来访问静态内部类的 实例方法
以上是关于内部类的主要内容,如果未能解决你的问题,请参考以下文章