Java 中内部类详细分析:
1).什么叫内部类:
.在一个类中还存在另外一个类,则称为内部类。
.在内部也可以定义另外一个类。如果在类Outer的内部再定义一个类inner,此时类inner就称为内部类,而类Outer则成为外部类。
.内部类可声明成public或private。
.当内部类声明成public或private时,对其访问限制与成员变量和成员方法完全相同。
2).内部类的存在的特点:
.缺点:正常的一个类操作时,在类中最好只定义属性或方法,如果定义一个类的话,则肯定破坏了程序的一个结构。
.优点:可以方便的访问外部类中的私有属性
3).使用static声明内部类
.如果一个内部类使用static关键字声明,则此内部类就称为外部类,可以直接通过外部类.内部进行访问.
4).在外部访问内部类:
.一个内部类除了可以通过外部类访问,也可以直接在其他类中调用,但是调用的格式:
.外部类.内部类 内部类对象 = 外部类实例.new 内部类();
5).在方法中定义内部类:
.一个内部类可以在任意的位置上定义。
/**
* 外部类
* @author Administrator
*
*/
public class Demo {
// 外部类的成员变量
/**
* 内部类
* @author Administrator
*
*/
class InteriorDemo{
// 内部类的成员变量
}
}
2).内部类的存在的特点:
.缺点:正常的一个类操作时,在类中最好只定义属性或方法,如果定义一个类的话,则肯定破坏了程序的一个结构。
.优点:可以方便的访问外部类中的私有属性
3).使用static声明内部类
.如果一个内部类使用static关键字声明,则此内部类就称为外部类,可以直接通过外部类.内部进行访问.
/**
* 通过static访问内部类
* @author Administrator
*
*/
public class InnerClassDemo02 {
public static void main(String[] args) {
new Outer1.Inner1().info() ;
}
}
class Outer1 {
private static String info = "Hello Word." ;
static class Inner1{
public void info(){
System.out.println(info);
}
}
}
4).在外部访问内部类:
.一个内部类除了可以通过外部类访问,也可以直接在其他类中调用,但是调用的格式:
.外部类.内部类 内部类对象 = 外部类实例.new 内部类();
/**
* 通过static访问内部类
* @author Administrator
*
*/
public class InnerClassDemo03 {
public static void main(String[] args) {
/**
* 第一个种方式
*/
// 实例化外部类对象
Outer2 out = new Outer2();
// 实例化内部类对象
Outer2.Inner2 inn = out.new Inner2();
// 调用内部类方法
inn.info();
/**
* 第二种方式
*/
// .外部类.内部类 内部类对象 = 外部类实例.new 内部类();
Outer2.Inner2 in = new Outer2().new Inner2();
// 调用内部类方法
in.info();
}
}
/**
* 定义外部类
* @author Administrator
*
*/
class Outer2 {
// 外部类属性
private String info = "Hello Word." ;
/**
* 定义内部类
* @author Administrator
*
*/
class Inner2{
/**
* 内部类方法
*/
public void info(){
// 直接使用外部类属性
System.out.println(info);
}
}
}
5).在方法中定义内部类:
.一个内部类可以在任意的位置上定义。
/**
* 通过方法访问内部
* @author Administrator
*
*/
public class InnerClassDemo04 {
public static void main(String[] args) {
new Outer3().fun("通过方法实例化并且传入参数必须通过fainl 修饰");
}
}
/**
* 定义外部类
* @author Administrator
*
*/
class Outer3 {
// 外部类属性
private String info = "Hello Word." ;
public void fun(final String value){
/**
* 定义内部类
* @author Administrator
*
*/
class Inner3{
/**
* 内部类方法
*/
public void info(){
// 直接使用外部类属性
System.out.println("类中的属性参数:" + info);
// 方法的参数
System.out.println("方法中的参数:" + value);
}
};
// 方法中实例化内部类
new Inner3().info();
}
}
总结:
.内部类在实际的开发中非常有用处,而且是经常使用的,所以一定要熟悉其语法及其有点。
.在Java系统中也会导出看见使用static声明内部类的情况,一定要记住,使用static声明的内部类是外部类,操作的时候要使用“外部类.内部类” 的形式访问。