java篇28-java的内部类
1.内部类的概念内部类表示的事物是外部类的一部分内部类单独出现没有任何意义。如发动机是汽车的一部分。内部类的访问特点1内部类可以直接访问外部类的成员包括私有2外部类要访问内部类的成员必须创建对象。示例二、内部类的分类分为成员内部类、静态内部类、局部内部类和匿名内部类前三个能看懂即可方便看源码匿名内部类必须掌握。1.成员内部类写在成员位置属于外部类的成员。如上例。成员内部类可以被一些修饰符所修饰比如private,默认protected,public,static等。补充private修饰的成员只能在该类中使用该类的方法使用无修饰符default)的成员可以被该类所在包中的类使用protected修饰的成员可以被该类所在包中的类及其子类使用public修饰的成员可以被任意类使用。获取成员内部类对象的两种方法1在外部类中编写方法对外提供内部类的对象注意Car.java文件编译之后会生成两个字节码文件一个是Car.class一个是CarEnginee.class。2直接创建格式外部类名.内部类名 对象名 外部类对象.内部类对象注意若内部类被private修饰则上图中的代码报错。内部类访问外部类的成员变量书写格式为外部类.this.成员变量名也遵循“就近原则”再例如2.静态内部类属于成员内部类的一种内部类使用static修饰。静态内部类只能访问外部类中的静态变量和静态方法如果想要访问非静态的需要创建对象。创建静态内部类对象的方式外部类名.内部类名 对象名 new 外部类名.内部类名()3.局部内部类将内部类定义在方法里就是局部内部类类似于方法里的局部变量。外界是无法直接使用需要在方法内部创建对象并使用。该类可以直接访问外部类的成员也可以访问方法内的局部变量。注静态内部类和局部内部类就不举例子了。4.匿名内部类以前的文章里讲过先看那篇匿名内部类本质上是隐藏了名字的内部类。当方法的参数是接口或类时以接口为例可以传递这个接口的实现类对象如果实现类只要使用一次就可以用匿名内部类简化代码。1接口的匿名内部类实现关系2抽象类的匿名内部类继承关系解释匿名内部类是为了省去写实现接口或继承抽象类的类的步骤。匿名内部类可以写在成员位置也可以写在局部位置。1写在局部位置写在类的方法中还可以写成这样自己调用自己定义的方法2写在成员位置注意因为main()方法是静态方法所有匿名内部类swimObject也加了static也可以两者都不加。