小白成长记——Java基础之内部类

来源:互联网 发布:哪里有呼死你软件出售 编辑:程序博客网 时间:2024/05/16 05:33
定义:
在一个类的类体之内再定义一个类,该情况下外面的类称为“外部类”,里面的类称为“内部类”

引入内部类的主要原因:
·内部类能够隐藏起来,不为同一包的其他类访问;
·内部类可以访问其所在的外部类的所有属性;
·再回调方法处理中,匿名内部类尤为便捷,特别是事件处理经常使用

内部类的分类:
1).成员内部类:在“外部类”的内部定义一个类
示例:
public class test {private double weight;public test(double weight) {this.weight = weight;}private class init {private double height;public init(double height) {this.height = height;}public void display() {System.out.println("高度是:" + height + ", 宽度是:" + weight);}}}
test为外部类,init为内部类,可以直接访问外部类的成员变量
2).局部内部类:在方法中定义的内部类称为局部内部类
注意点:
·局部内部类不能用public或private访问修饰符进行声明
·局部内部类作用域被限定在声明该类的方法块中
·局部内部类的优势在于,它可以对外界完全隐藏起来,除了所在的方法之外,对其他方法而言是不透明的
·局部内部类不仅可以访问包含它的外部类的成员,还可以访问局部变量,但这些局部变量必须被声明为final
示例:
public static void main(String[] args) {// 创建局部内部类class Inner {int a;}// 创建局部内部类的子类class InnerSon extends Inner {int b;}// 创建局部内部类的对象InnerSon is = new InnerSon();is.a = 5;is.b = 6;System.out.println("a的值为:" + is.a + ", b的值为:" + is.b);}
在实际开发中很少使用局部内部类,因为作用域太小,只在本方法中有用。
3).静态内部类:使用static关键字修饰一个内部类,则该内部类称为“静态内部类”
静态内部类属于外部类本身,而不属于外部类的某个对象
示例:
public class test {private int a = 5;private static int b = 6;static class Inner {// 静态内部类可以包含静态成员private static int c = 7;public void display() {// 出现错误,静态内部类不能访问外部类的示例变量System.out.println(a);// 可以访问外部类的静态变量System.out.println(b);}}}
静态内部类只能访问外部类的静态变量
4).匿名内部类:匿名内部类就是没有名字的内部类,匿名内部类适合只需要使用一次的类,当创建一个匿名类时会立即创建该类的一个实例,该类的定义会立即消失,不能重复使用
示例:
public static void main(String[] args) {System.out.println(new Object() {public String toString() {return "匿名内部类";}});}
原创粉丝点击