【Java基础】四种内部类——成员内部类 静态内部类 局部内部类 匿名内部类

本文介绍了Java中的四种内部类:成员内部类、局部内部类、匿名内部类和静态内部类。成员内部类可访问外部类的所有成员,实例化需依赖外部类对象。局部内部类只存在于方法或作用域内,只能访问final修饰的局部变量。匿名内部类通常用于一次性实现接口,没有类名。静态内部类则可以声明静态成员,无需外部类对象即可创建实例。
摘要由CSDN通过智能技术生成

前言

Java中,有一些类存在于其他类的内部,有一些类,内部存在其他类。所谓内部类就是定义在类中的类,而包含这个内部类的类就是外部类
与类中变量或是对象相似的是,内部类根据不同的位置和效用分为:成员内部类,局部内部类,匿名内部类和静态内部类
下面来总结一下:


成员内部类

作为类成员出现的内部类,它的作用范围和成员变量十分相似。
先写一个带有成员内部类的类:

class OuterClass
{
   
	private int num = 0;
	public void f()
	{
   
		System.out.print("Hello World!!");
	}
	
	class InnerClass
	{
   
		public void doSomething()
		{
   
			f();
			System.out.println(num);
		}
	}
}

内外类的方法和变量

在外部类中,两者的变量和方法是相互使用的,内部类可以访问外部类的成员和方法,外部类可以通过内部类对象访问内部类成员和方法。即使成员或是方法是被private修饰的。

在外部类外,通过内部类对象是无法访问到内部类的private的,这点同外部类。

那么既然可以相互调用,就必然会面临着命名冲突的问题,这里的命名冲突包含着内部类局部变量内部类成员变量外部类成员变量之间的冲突。为了解决这个问题,java采取的机制和解决类方法中局部变量与成员变量冲突的解决方案:使用this关键字和外部类调用。
具体的,在内部类方法中,若命名产生冲突(极短一些的情况,假设上述三种变量都存在冲突),我们可以:

  • 直接使用变量名,访问内部类局部变量
  • 使用this关键字,访问内部类成员变量
  • 使用 外部类名.this,访问外部类成员变量
    可参考以下代码:
class Outer
{
   
	private int x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值