内部类

本文详细介绍了Java中的内部类,包括成员内部类、局部内部类和匿名内部类的特性与用法。讲解了如何在外部类中访问内部类的成员变量,以及内部类与外部类之间的关系。同时,探讨了局部内部类只能访问final局部变量的限制,并展示了匿名内部类在简化接口实现时的作用。通过示例代码,读者将能够更好地理解和运用内部类。
摘要由CSDN通过智能技术生成

内部类

内部类:成员内部类(全局)、局部内部类、匿名内部类
1.成员内部类:在内部类中直接存取所在类的私有成员变量。

内部类的实例一定要绑定在外部类的实例上,如果从外部类中初始化一个内部类对象,那么内部类对象会绑定在外部类对象上。内部类初始化方式与其他类初始化方式相同,都是使用new关键字。

package test;

public class outClass {	
   innerClass in = new innerClass();  //外部类实例化内部类对象引用
   public void ouf() {
	in.inf();        //在外部类方法中调用内部类方法
}
   class innerClass{
	  innerClass() {  //内部类构造方法
	}
	  public void inf() {  //内部类成员方法
	}
	  int y = 0;  //定义内部类成员变量
   }
   public innerClass  doit() {
  //y = 4;           //外部类不可直接访问内部类成员变量
    in.y = 4;        //外部类不可直接访问内部类成员变量
    return new innerClass();     //返回内部类引用
   }
   public static void main(String[] args) {
		outClass out = new outClass(); //内部类对象实例化操作必须在外部类或外部类的非静态方法中的实现
		outClass.innerClass in = out.doit(); 
		outClass.innerClass in1 = out.new innerClass();	   
	    }
}

如果在外部类和非静态方法之外实例化内部类对象,需要使用外部类。内部类的形式指定该对象的类型。
内部类的对象会依赖外部类对象,除非已经存在一个外部类对象,否则类中不会出现内部类对象。
非内部类不能不能声明为private和protected。

使用this关键字获取内部类与外部类的引用

如果在外部类中定义的成员变量与内部类的成员变量名称相同,可以使用this关键字。

public class outClass {	
	private int x;
	private class inner{
		private int x = 9;
		public void doit(int x){
			x++;  //调用的是形参x
			this.x++; //调用内部类的变量x
			outClass.this.x++;  //调用外部类的变量X
	  }
   }
}

2.局部内部类

在方法体内使用局部变量,该局部变量需要被设置为final类型,在方法体内的内部类只能访问方法中final类型的局部变量,该局部变量相当于一个常量,它的生命周期超出方法运行的生命周期,由于该局部变量被设置为final,所以不能再内部类中改变该局部变量的值。

interface outinterface2{	
}
class   outClass3{
	public outinterface2 doit(final String x) {
		class innerClass2  implements outinterface2{
			 innerClass2(String s) {
				s = x;
				System.out.println(s);
			}
		}
		return new innerClass2("doit");
	}
}

一个静态内部类中可以声明static成员,但是在非静态内部类中不可声明静态成员。

3.匿名内部类

匿名内部类,没有名称,使用默认的构造方法生成对象在匿名内部类定义结束时需要分号标识,这个分号并不是结束标志,而是代表创建接口引用表达式的标识。

return new A(){
...//内部类体
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值