java中内部类

内部类的定义:将一个类定义在一个类的里面,对里面那个类称之为内部类,或者内置类,嵌套类

内部类访问的特点:

1:内部类可以直接访问外部类的成员,包括私有成员

2:而外部类要访问内部类中的成员,必须要建立内部类的对象

实例代码:

class Out{
private int num=4;
public void show(){
System.out.println("a="+getInner().a);
}
class Inner{
   int a=6;
public void print(){
System.out.println("num="+num);
}
}
public Inner getInner(){
return new Inner();
}
public static void main(String[] args) {
Out out = new Out();
Out.Inner inner = new Out().new Inner();
inner.print();
out.show();
}
}

内部类可以是静态static的,也可用public,default,protected和private修饰

1:public 修饰这个不用说,权限是最大的

2:private 修饰只能在本类中使用,几乎没这么用法

3:如果被static修饰,代表内部类是一个静态的内部类,外部类一加载内部类就存在了(在内存中),那么这个内部类就相当于一个外部类

例子:

public class Demo {
private static int num = 4;
static  class Inner{
int a = 6;
public void show() {
System.out.println("num="+num);
}
}
public static void main(String[] args) {
Inner inner = new Demo.Inner();
inner.show();
}
}

内部类是静态的,如果要访问外部类变量,那么外部类的变量也必须是静态的,道理很简单,因为内部类是静态的,就相当于外部类的静态方法,当直接用类.方法名方式调用方法时,这个变量还没有在内存中被分配空间,所以就不能访问,

如果静态内部类中的方法也是静态的,那么内部类都无需创建对象就可以直接调用方法了,代码:

public class Demo {
private static int num = 4;
static  class Inner{
int a = 6;
public  void show() {
System.out.println("num="+num);
}
public static void fun(){
System.out.println("fun");
}
}
public static void main(String[] args) {
Demo.Inner.fun();
}
}


注意:如果内部类中有静态的成员,那么内部类必须要求是静态的



你可能感兴趣的:(java基础)