您的位置:首页 > 编程语言 > Java开发

java总结(内部类)

2014-08-18 00:19 218 查看
1、内部类顾名思义就是定义在类内部的类

内部类根据在类内部的位置可以分为:

1)静态内部类 :使用static关键字修饰,声明 在类体中

静态内部类只能访问外部类的静态成员变量 不是太常用 一般在程序测试中用

public class OutClass {
private static String name="张三";
private String name2 = "李四";

static class InnerClass{
private String stuname = name;
//private String stuname2 = name2; //出错
public void sys(){
System.out.println("innerclass" + stuname);
}
}
public static void main(String[] args){
InnerClass inner = new InnerClass();
inner.sys();
System.out.println("outclass" + OutClass.name);

}
}

}
输出结果 innerclass 张三 outclass 张三

在静态内部类中不可以访问外部类中的非静态成员变量

2)成员内部类 声明在类体中 不适用static 具有类的成员特征 必须有类的实例才能

才能创建内部类实例,内部类实例可以访问共享外部类的成员变量,静态非静态都可以 很常用

public class OutClass{
private static String name1 = "张三";
private String name2 = "李四";
class InnerClass{
private String stuname1 = name1;
private String stuname2 = name2;
public void sys(){
System.out.println("innnerclass stuname1" + stuname1);
System.out.println("innerclass stuname2" + stuname2);
}
}
public static void main(String[] args){
OutClass out = new OutClass();
InnerClass inner = out.new InnerClass();   //内部类的声明必须在创建外部类实例后 用外部类实例<span style="white-space:pre">		</span>//创建
inner.sys();
System.out.println("outclass name1"  + name1);
System.out.println("outclass name2" + name2);
}

}

3)局部内部类 把类声明在方法中 作用域类似局部变量

public class AnnInnerClass {
int r = 9;
public static void main(String[] args){
int a = 1;
final int b = 5;
class Foo{
int c = 6;
public void test(){
//System.out.println(a); 出错   a变量不是final的
System.out.println(b);

}
}

}
}

4)匿名内部类 匿名类 可以写在内何地方就像一般的语句 很常见 语法很想创建对象

Thread thread = new Thread(){}

匿名类是对原类的继承 同时创建了实例 {}就是继承

以后的类体中 类体中可以使用所有类的语法

匿名类不能写构造器

匿名类可以从抽象或者接口中继承 必须提供抽象方法的实现

5)内部类可以编译成独立的class文件 但是在类会加上外部类的类名
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: