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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 冯瑞君老师 于 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

1 个回复

倒序浏览
小菜鸟感觉,概念说明总结的很好,代码示范要是更完整一些对于新手复习来很实用;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马