#打卡学习##JAVA#内部类

Hello 今天学到了内部类 让我们来复习下
什么是内部类
在类的中定义一个类,被称作内部类

class OuterClass{
	class InnerClass{//内部类
	}
}

JAVA里面不止一个内部类
四种内部类
1,成员内部类
定义在类中的类,属于类的成员,创建成员内部类对象必须依赖外部类对象
第一:成员内部类中不能存在任何static的变量和方法;
第二:成员内部类是依附于外部类的,所以只有先创建了外部类才能够创建内部类。

class OuterClass{
	class InnerClass{//成员内部类
	}
}
//创建外部类对象
OuterClass oc= new OuterClass();
//通过外部类对象创建内部类对象
OuterClass.InnerClass oi = oc.new InnerClass();

2,静态内部类
定义在类中的类,class关键字前加入static修饰符,创建静态内部类对象不需要外部类对象。
第一: 它的创建是不需要依赖于外围类的。
第二: 它不能使用任何外围类的非static成员变量和方法。

class OuterClass{
	static class InnerClass{//静态内部类
	}
}
//创建静态内部类对象
OuterClass.InnerClass oi = new OuterClass.InnerClass();

3,局部内部类
定义在方法中的类,作用范围只有在当前方法中
有这样一种内部类,它是嵌套在方法和作用于内的,对于这个类的使用主要是应用与解决比较复杂的问题,想创建一个类来辅助我们的解决方案,到那时又不希望这个类是公共可用的,所以就产生了局部内部类,局部内部类和成员内部类一样被编译,只是它的作用域发生了改变,它只能在该方法和属性中被使用,出了该方法和属性就会失效

public void method(){
	class InnerClass{//局部内部类
	}
	InnerClass ic= new InnerClass();
}

4,匿名内部类
特殊的局部内部类 没有类名 只能作为子类出现且只能创建一个对象!
1、使用匿名内部类时,我们必须是继承一个类或者实现一个接口,但是两者不可兼得,同时也只能继承一个类或者实现一个接口。
2、匿名内部类中是不能定义构造函数的。
3、匿名内部类中不能存在任何的静态成员变量和静态方法。
4、匿名内部类为局部内部类,所以局部内部类的所有限制同样对匿名内部类生效。
5、匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法。

public void method(){
	MyClass mc =new MyClass(){
	};
}
//匿名内部类,new MyClass 那么mc 就等于MyClass的子类对象结尾的{  }就代表子类的代码块

内部类的定义

1、内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独立。
​ 2、在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或者继承同一个类。
​ 3、创建内部类对象的时刻并不依赖于外围类对象的创建。不准确的,分情况
​ 4、内部类并没有令人迷惑的“is-a”关系,他就是一个独立的实体。把内部类当成X来看待,类里面多了一个X
5、内部类提供了更好的封装,除了该外围类,其他类都不能访问。私有内部类;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值