【Java中那些让人摸不着头脑的各种类】

1、常用类(内部类、匿名类、抽象类)

对于局部类、方法、变量,只针对特定区域有效,访问权限无效。

1. 外部类的修饰符可以为 public  和 默认缺省修饰符(default)。因为外部类在包中,只有包可见和包不可见。

2. 外部类中的内部类可以看做是外部类的成员变量。

 

1. 内部类:(常规内部类、静态内部类、局部内部类、匿名内部类)

   常规内部类:没有用static修饰且定义在外部类类体中,可直接访问外部类成员变量、方法。

   静态内部类:与静态内部方法相似,只能访问外部类的static成员,可通过对象引用访问外部类的成员变量。(实例变量、方法)

 局部内部类:存在于方法体或语句块中(包括方法、局部块、静态初始化块)不能加任何修饰符,只对局部有作用。

    匿名内部类:定义一个类的同时创建一个没有名字的类称为匿名内部类,只用一次。

 

静态内部类才可以定义static方法,

内部类权限修饰符可以为publicprotected(异包子类)、默认(同包)private(同类有效)所以说一个java文件可以有多个public修饰的类。


为什么使用内部类?

每个内部类都能独立的继承一个抽象类实现,无论是外部类是否已继承。最大的优点就是它能够非常好的解决多重继承的问题。

    1)内部类可以有多个实例,且每个实例有自己的状态信息,相互独立。

    2)在单个外部类中,可以让多个内部类以不同方式来实现同一个接口,或者继承同一个类。另一种形式的多态。

    3)创建内部类实例对象不依赖外部类。

    4)内部类没有令人迷惑的 is--a ”关系,它就是一个独立的实体。

    5)内部类提供了更好的封装,除了外部类,其他类不可访问。


2. 匿名类:

 匿名内部类:用在任何允许存在表达式的地方,只能用一次。

 局部内部类:用在任何允许出现局部变量的地方,可以在自己的定义域中多次使用。

  

 

1. 抽象类相关:一般使用abstract修饰 

    1. 抽象类中可以有普通属性、方法、静态属性和方法。但接口没有普通成员变量,两者都可以有静态变量。

    2. 抽象类中中可以有构造方法,用来初始化成员变量,但不可实例化。

    3. 抽象类可以有抽象方法,也可以有普通方法。

    4. 如果一个普通类继承了抽象类,必须要重写抽象方法,如果抽象类继承了抽象类,可以不重写抽象方法。

    5. 抽象类可以实现接口,不用重写所有的抽象方法。


   abstract不可与final(不能重写)、static(属于类,不能继承)、private(不能继承)共存,因为需要被继承,重写方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值