A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

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

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

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

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


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

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

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

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

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


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

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


为什么使用内部类?

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

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

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

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

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

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


2. 匿名类:

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

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

  

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

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

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

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

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

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


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


【转载】原文地址:https://blog.csdn.net/ca1m0921/article/details/80944865


3 个回复

倒序浏览
奈斯
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马