Java中的各种内部类的区别

Java中的内部类

一.成员内部类

  • 1.位置
    • 在类的内部,与成员变量,方法同级
  • 2.访问权限修饰符
    • 可以设置全部的类型的访问权限修饰符
  • 3.访问外部类的范围
    • 所有外部类属性和方法(包括private修饰的)
  • 4.内部的方法和属性
    • 只能有非静态的方法和属性
  • 5.创建对象
    • 通过创建外部类对象来创建
	public class InstanceOutterClass{
			private String name;
			private static int age;
			public void say(){}
			public static void main(String[] args){
				new InstanceOutterClass().new InstanceInnerClass();//创建成员内部类对象
			}

			public class InstanceInnerClass{}


		}

二.静态内部类

  • 1.位置
    • 在类的内部,与成员变量,方法同级
  • 2.访问权限修饰符
    • 可以设置全部的类型的访问权限修饰符
  • 3.访问外部类的范围
    • 所有外部类静态属性和方法(包括private修饰的)
  • 4.内部的方法和属性
    • 可以写所有类型的方法和属性
  • 5.创建对象
    • 通过外部类.内部类构造器
	public class StaticOutterClass{
			private String name;
			private static int num;
			public void say(){}
			public static void main(String[] args){
				new StaticOutterClass.StaticInnerClass();//创建静态内部类对象
			}

			public static class StaticInnerClass{}
		}

三.局部内部类

  • 1.位置
    • 在类的方法内部
  • 2.访问权限修饰符
    • 就像成员中的一个局部变量,没有访问权限修饰符
  • 3.访问外部类的范围
    • 可以访问外部类的成员方法和变量;访问外部方法或外部作用域中的属性是,被访问的属性会被final修饰
  • 4.内部的方法和属性
    • 和方法中的普通属性一样,所以不能有静态方法和属性
  • 5.创建对象
    • 在该方法或作用域内部创建

四.匿名内部类

  • 1.位置
    • 任何地方,但是要依托于类或接口创建
  • 2.访问权限修饰符
    • 没有访问权限修饰符
  • 3.访问外部类的范围
    • 和局部内部类一致
  • 4.创建对象
    • 声明时候就会创建,且声明必须是跟在new 类名()后面
  • 5.内部的方法和属性
    • 和方法中的普通属性一样,所以不能有静态方法和属性
  • 6.注意
    • 匿名内部类除了依托的类或接口之外,不能指定继承或者实现其他类或接口,同时也不能被其他类所继承,因为没有名字。

    • 匿名内部中,我们不能写出其构造器,因为没有名字。(有无参构造器)

    • 如果依托的是类,那么创建出来的匿名内部类就默认是这个类的子类;如果依托的是接口,那么创建出来的匿名内部类就默认是这个接口的实现类。

    • 如果依托的是类,那么创建出来的匿名内部类就默认是这个类的子类;如果依托的是接口,那么创建出来的匿名内部类就默认是这个接口的实现类。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值