黑马程序员_内部类概述

来源:互联网 发布:如何头文件javascript 编辑:程序博客网 时间:2024/06/07 03:24

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

内部类:

将一个类定义在另一个类里面,对里面那个类就称为内部类(内置类,嵌套类)

访问特点:

         内部类可以直接访问外部类中的成员,包括私有成员。

         而外部类要访问内部类中的成员必须要建立内部类的对象。

内部类的位置

1,内部类定义在成员位置上,可以被private,static成员修饰符所修饰。
                   被static修饰的内部类只能访问外部类中的静态成员。

2,内部类定义在局部位置上,也可以直接访问外部类的成员。
         同时可以访问所在局部中的局部变量,但必须是被final修饰的。

匿名内部类

就是内部类的一种简化写法,和匿名方法一样,可以调用其中的方法等等,但是无法有实例化对象。并且匿名内部类必须是继承或者实现一个外部类或者接口。格式为:

         new外部类名或接口名(){覆盖类或者接口中的代码(也可理解为自定义对象)}

 

简单理解:就是建立一个带内容的外部类或者接口的子类匿名对象。

示例:

package com.itheima;

 

public class InnerClassDemo {

    public static void main(String[] args) {

       new Outer().Method();

       //访问非静态内部类中方法。

       new Outer.Inner2().show();

      

       new Outer().Method2();

    }

}

class Outer extends Dog{

    private int x = 4;

    private class Inner{//创建一个私有化内部类。

       int x = 6;

       void show(){

           //内部内访问内部变量和外部变量。

           System.out.println("inner x ="+this.x+" Outer x ="+new Outer().x);

       }

    }

 

    static class Inner2{//静态内部类

       void show(){

           System.out.println("inner2show");

       }

    }

    void Method(){

       Inner in = new Inner();

       in.show();

    }

    void Method2(){

       new Dog()

       {

           int num= 9;

           void show()

           {

              System.out.println("dog shownum = "+num);

           }

       }.show();

    }

}

0 0
原创粉丝点击