黑马程序员技术交流社区

标题: 【太原校区】Java内部类 [打印本页]

作者: 冯瑞君老师    时间: 2018-3-23 15:48
标题: 【太原校区】Java内部类
本帖最后由 冯瑞君老师 于 2018-3-23 16:14 编辑

什么是JAVA内部类以及具体有哪几种?



一、内部类定义:
   一个类的定义放在另一个类的内部,这个类就叫做内部类
二、内部类的特点:
    1、内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号 。
  2、内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的 。
  3、内部类声明成静态的,就不能随便的访问外部类的成员变量了,此时内部类只能访问外部类的静态成员变量 。
三、内部类分类:分四种
1静态内部类
  必须以static关键字标注
  只能访问外部类中的静态的成员变量或者是静态的方法
  访问一个内部类使应该这样
    outerClass.innerClass inter = new outerClass.innerClass();
    不能直接实例化内部类
2成员内部类
  定义在一个类的内部,但是没有static关键字修饰
  生成示例的方法outerClass.innerClass inter = (new outerClass()).new innerClass()
  对外部类变量的引用outClass.this.variale
  可以访问外部类的静态与非静态方法
[Java] 纯文本查看 复制代码
class B extends TestPojo implements TestInterface {
           // 内部类 B
        public void run(){
                              System.out.println("跑!");
                            }   // 重写的接口方法
        public void testf() {
                              System.out.println("重写方法!");
                            }  }   // 方法里面调用内部类
          public void test(){
                            B b = new B() ;
                            b.testf() ;   
                            b.run() ;     
                            b.testpojo() ;   
                          }  // 方法测试
          public static void main(String[] args) {
                            A a = new A() ;
                            a.test() ;
                          }
}

// 定义了一个接口
interface TestInterface{
                          public void testf() ;
                        }

// 定义了一个普通类
class TestPojo {
          public void testpojo(){
                            System.out.println("一个类");
                          }
}
// 实现 调用内部类里面的方法
class Textone {
          public static void main(String[] args) {
                            A.B b = new A().new B() ;  //调用类A里面的内部类B
                            b.testf() ;   
                            b.run() ;  
                            b.testpojo() ;
                          }
}
}
3局部内部类
  局部内部类指的是定义在一个方法中的类
  只有在当前方法中才能对局部内部类里面的方法以及变量进行访问
  局部内部类只能访问其所在方法的final类型变量
[Java] 纯文本查看 复制代码
public class PerTest {
  public void test(){     // 定义一个方法
    class Ne{        // 定义一个方法内部类
      public void fly(){  // 定义方法内部类的方法
        System.out.println("在飞!");
      }
    } ;
    new Ne().fle() ;    //调用内部类的方法
  }
  public static void main(String[] args) {
    new PerTest().test();
  }
}

4匿名内部类
  隐式的继承一个父类或者是实现某个接口



太原中心地址
太原市民营区五龙口街199号汇大国际品牌总部6号楼四层
邮编:100096
电话:4006189090


作者: hmhm123    时间: 2018-3-23 17:01
小菜鸟感觉,概念说明总结的很好,代码示范要是更完整一些对于新手复习来很实用;




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2