内部类

成员内部类

成员内部类

/*
 * 1.可以使用四种访问权限修饰符修饰的
 * 2. 内部类创建方式 要通过 外部类对象创建内部类对象
 * 3. 使用内部类的时候必须要导包
 * 3.内部类是可以使用外部类的属性和方法的, 包括私有的
 * 4. 内部类属性和外部类属性同名的时候, 优先使用的 内部类的 即使用this也是使用的内部类的, 除非创建外部类对象调用
 * 5. 局部变量是不能用static修饰的
 * 6. 内部类字节码文件命名方式   外部类$内部类.class
public class Out{
	//成员变量
	//成员方法
	//成员内部类
	访问权限 class In{
		//成员变量
		//成员方法
	}
}

创建对象

//创建外部类对象
	Out o = new Out();
	//通过外部类找到内部类,通过外部类对象创建内部类对象
	Out.In i = o.new In();

    一步完成:
    Out.In i2=new Out().new In();
    # 局部内部类

局部内部类

局部内部类 类似一个局部变量
1.局部内部类定义在方法内部的类
2. 不能使用访问权限修饰符以及 static进行修饰
3. 局部内部类中可以使用 外部类的属性也可以使用方法中的局部变量
4. 如果局部内部类中的属性和外部类成员属性同名, 则可以使用外部类.this.属性 调用外部类的属性
5. 局部内部类只能在声明此内部类的方法中创建对象
6. 局部内部内部类只能方法被调用的时候,才能执行

public class Test {

	int a = 3;
	public static void main(String[] args) {
		Test test = new Test();
		test.test();
	}
	
	
	
	public  void test(){
		 int age = 3;

		 class Inner{
			public String name= "mingzi";
			private  int a = 5;
			
			public void show(){
				  System.out.println(name);
				  System.out.println(age);
				  System.out.println(Test.this.a);
			} 
		 }
		 
		 // 5.局部内部类只能在声明此内部类的方法中创建对象
		 Inner inner = new Inner();
		 inner.show();
		 // 6. 局部内部内部类只能方法被调用的时候,才能执行
	}
}

静态内部类

静态内部类

  1. 静态内部类中可以使用静态的属性和方法
    2. 静态内部类可以直接创建对象 不需要外部类对象
    3. 静态内部类中 不能直接使用外部类的非静态的属性和方法
    4. 内部类中的属性和外部类属性同名的时候, 可以通过外部类.静态属性 调用外部类属性
    5. 字节码文件的名字 外部类$内部类.class
static class Inner{
		
		int a;
		static int b;
		static String name;

		public void a(){
			System.out.println("a");
			System.out.println(Outer.name);
			//System.out.println(age);
		}
		
		public static void b(){
			System.out.println("static 的b");
		}
		
	}

匿名内部类

匿名内部类:
1. 没有自己本类的名字, 只能拿接口或者抽象类的名字代表
2. 创建的是实现类或者子类的对象
左边是接口的名字 = 右边是实现类的对象 向上转型
4. 不会再匿名内部类中新增 特有方法, 因为没有办法通过接口名字调用
5. 即使一个内部类或者接口 ,new了多次, 是多个实现类
6. 当有实现类或者子类只需要创建一次对象,则可以使用匿名内部类. 可以使程序结构更加简洁
7. 匿名内部类的名字 外部类$数字.class

Run run = new Run() {
			
			@Override
			public void run() {
				System.out.println("外星人跑步");
				eat();
			}
			
			// 匿名内部类中可以额外定义自己的方法, 但是一般不这样做
			public void eat(){
				
			}
			
		};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值