`
jiabao523527
  • 浏览: 7635 次
  • 性别: Icon_minigender_1
  • 来自: 天津
最近访客 更多访客>>
社区版块
存档分类
最新评论

黑马程序员_java中的内部类

 
阅读更多

                                       ------- android培训java培训、期待与您交流! ---------- 

 

内部类,有时叫做嵌套类。内部类允许一个类定义被放到另一个类定义里。内部类是一个有用的特征,因为它们允许将逻辑上同属性的类组合到一起,并在另一个类中控制一个类的可视性。

1

     

public class  Outer1{

         private int   size;

     //定义一个内部类

     public class  Inner{

         public void   doStuff( ){

              //内部类从外部类中接受参数size

              size++;

         }

     }

 

     public void testTheInneer( ){

         Inner i= new Inner( );

         i.doStuff( );

     }

}

   

内部对象拥有一个外部对象的引用:

 

 

 

 

 

2

这个例子阐述了如何在其它类(外部类的外部)实例化内部类:

 

public class  Outer2{

      private int   size;


      public class  Inner{

          public void   doStuff( ){

                 size++;

           }

     }

  }



public class TestInneer( ){

     public static void main(String[ ] args){

         Outer2 outer = new Outer2( );


         //创建内部类对象

         Outer2.Inner inner = outer.new Inner( );

         inner.doStuff( );

     }

}


 

内部类要在外部类实例的上下文中实例化:



3

本例阐述如何区分同名变量:

 

public class Outer3{
		private int size;
		public class Inner{
			private int size;
	 		public void doStuff( int size){
		                    size++;		//本地方法参数
                                         this.size++;   	//内部类参数
                                          Outer.this.size++;	//外部类参数
	 		}
            }
 }

 

 

 

1.4. 4

本例阐述在方法内部定义内部类:

public class Outer4{

     private int size = 5;

      public Object makeTheInner((int localVar){

         final int finalLocalVar = 6;

         class Inner{

              public String toString( ){

                   return (“Inner size=” + size + 

                            ”localVar=” + localVar +  “finalLocalVar=” + finalLocalVar +”);

              }

         }

         return new Inner();

     }

     public static void main(String[] args){

         Outer4 outer = new Outer4();

         Object obj = outer.makeTheInner(47);

         System.out.println(“The object is “ + obj);

     }

}

  

注意:在方法中定义的内部类的方法,不能访问外方法的运行时变量空间,可以访问外方法的非运行时变量空间。 

 内部类属性

 内部类有如下属性:

 内部类只在定义他们的代码段内可见。

内部类可以被定义在方法中。如果方法中的变量被标记为final,那么,就可以被内部类中的方法访问。

内部类可以使用所嵌套类的类和实例变量以及所嵌套的块中的本地变量。内部类可以被定义为abstract.

只有内部类可以被声明为privateprotected,以便防护它们不受来自外部类的访问。

 一个内部类可以作为一个接口,由另一个内部类实现。被声明为static的内部类自动地成为顶层类。这些内部类失去了在本地范围和其它内部类中使用数据或变量的能力。

内部类不能声明任何static成员;只有顶层类可以声明static成员。因此,一个需求static成员的内部类必须使用来自顶层类的成员。

 

 

  • 大小: 15.9 KB
  • 大小: 13.9 KB
  • 大小: 13 KB
分享到:
评论

相关推荐

    黑马程序员_毕向东_Java基础视频教程第18天-09-IO流(文件的续写)

    黑马程序员_毕向东_Java基础视频教程第18天-09-IO流(文件的续写)

    BasicJava_java_

    Java基础编程Day01-11,黑马程序员内部绝密编程课程,快速成为Java程序员

    黑马程序员入学测试题详解

    3、 方法中的内部类能不能访问方法中的局部变量,为什么? 4、 定义一个交通灯枚举,包含红灯、绿灯、黄灯,需要有获得下一个灯的方法,例如:红灯获取下一个灯是绿灯,绿灯获取下一个灯是黄灯。 5、 编写...

    javase基础练习_模拟电影购票系统_黑马课程

    Ⅳ.lambda表达式遍历集合,以及比较器comparator()匿名内部类的使用 V.使用Stream流操纵集合 功能: ①日志框架搭建、系统角色设计 ②首页、登录、商家界面、用户界面实现 ③商家功能-展示详情、影片上架、退出 ④...

    黑马程序员 黑马 数据结构与算法 课件 源代码.zip

    存储结构(物理结构):描述数据在计算机中如何具体存储。例如,数组的连续存储,链表的动态分配节点,树和图的邻接矩阵或邻接表表示等。 基本操作:针对每种数据结构,定义了一系列基本的操作,包括但不限于插入、...

    黑马内部复习面试资料

    文件为黑马程序员老师整理的复习和面试准备的资料。包括java基础复习和面试宝典。

    Java基础最全笔记文档

    3. 多态、内部类、常用API 4. 日期与时间、日期类、包装类、正则表达式、Arrays 类、常见算法、Lambda 表达式 5. Collection集合、数据结构、List集合、泛型、Set集合、可变参数 6. 集合工具类Collections、Map集合...

    黑马入学考试试题

    黑马程序员训练营入学考试题 1、方法中的内部类能不能访问方法中的局部变量,为什么? 2、编写一个类,在main方法中定义一个Map对象(采用泛型),加入若干个对象,然后遍历并打印出各元素的key和value。 ...

    JAVA面试宝典

    程序员面试宝典!该宝典为黑马程序员内部资料,对面试中的各种技术问题给出了详细的解答,

    javaweb文件上传与下载模块源代码

    javaweb文件上传与下载模块源代码 详见内部说明书 适合于初学者,JAVA程序员收藏

    WEB开发入门

    这是黑马程序员内部,方立勋大牛讲解的web开发入门ppt文档,很有借鉴价值。

    javase总结

    笔记来源于黑马程序员内部总结,总结的非常全面很适合懒人学者的学习和复习

Global site tag (gtag.js) - Google Analytics