java内部类实例讲解



java内部类,种类有哪些?用法的实例。顾名思义就是在一个类里面定义一个类。那么为什么要使用内部类呢?外部类属性方法的调用。

假如我们要定义一个电脑类,而电脑里面有cpu,这时候就可以将cpu定义为电脑类的内部类,好处是别人不能直接方法cpu内部类,也就是封装了内部类,另外一点是内部类可以直接使用外部类的方法属性(包括私有的)等。但是外部类不能直接访问内部类的属性方法等。

java内部类的使用场合:由于内部类提供更好的封装特性,并且可以很方便访问外部类的属性,因此,通常内部类只为所在外部类提供服务的情况优先使用。要先有外部类才有内部类。编译后会有两个class文件,一个是内部一个是外部的。

内部类分类有哪些:成员内部类(非静态内部类与静态内部类)、匿名内部类、局部内部类(把类定义在方法里面,但是使用的很少)。

以下是非静态内部类与静态内部类的使用:

非静态内部类对象单独属于外部类的某个对象。非静态内部类里面不能有非静态方法属性,静态初始化块。

静态内部类就是在类的前面加上static,当一个静态内部类对象存在,并不一定存在对应的外部类对象,因此静态内部类实例方法不能直接访问外部类的实例方法;静态内部类看做外部类的一个静态成员,因此外部类的方法中可以通过:静态内部类名字,访问静态内部类的静态承压u年。通过new静态内部类方法静态的实例;在外部类的外面创建静态内部类:Face.Ear e = new Face.Ear();

java内部类实例: 


package cn.bjsxt.innerClass;

/**
* 测试内部类的使用
* @author dell
*
*/
public class Outer {
public static void main(String[] args) {
Face f = new Face();
Face.Nose n = f.new Nose();
n.breath();
Face.Ear e = new Face.Ear();
e.listen();
}
}

class Face {
int type;
String shape=”瓜子脸”;
static String color=”红润”;

class Nose {

void breath(){
System.out.println(shape);
System.out.println(Face.this.type);//当内部类与外部类的属性有冲突时
System.out.println(“呼吸!”);
}
}

static class Ear {
void listen(){
System.out.println(color);
System.out.println(“我在听!”);
}
}

}