`
jiabao523527
  • 浏览: 8051 次
  • 性别: 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
分享到:
评论

相关推荐

    黑马程序员_java8新特性详解笔记和源码

    Java 8是Java语言发展的一个重要里程碑,引入了许多创新性的特性和改进,...黑马程序员的Java8新特性详解笔记和源码提供了深入学习这些概念的资源,结合实际的代码示例,将有助于你更好地理解和掌握Java 8的核心特性。

    01_黑马程序员_张孝祥_Java基础加强_课程价值与目标介绍.zip

    【描述】中提到的"( 01_黑马程序员_张孝祥_Java基础加强_课程价值与目标介绍.zip )" 暗示这门课程可能包含一系列视频教程,首个文件"01_黑马程序员_张孝祥_Java基础加强_课程价值与目标介绍.avi"很可能是课程的开篇...

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

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

    黑马程序员_毕向东_Java基础视频教程第22天-06-GUI(Action事件).zip

    在本视频教程“黑马程序员_毕向东_Java基础视频教程第22天-06-GUI(Action事件)”中,讲师毕向东深入讲解了Java GUI中的Action事件处理机制,这是构建用户友好界面的关键部分。 首先,我们要理解什么是GUI。GUI,...

    黑马程序员_Java基础辅导班教程课件[第01期]第7天

    1. **类与对象**:Java是一种面向对象的语言,因此理解类和对象的概念至关重要。类是对象的蓝图,定义了对象的属性(字段)和行为(方法)。而对象则是类的实例,具备类定义的所有特征和功能。 2. **封装**:封装是...

    黑马程序员入学Java精华总结

    ### 黑马程序员入学Java精华总结 #### 一、Java概述与基础知识 1. **何为编程?** - 编程是指通过编写计算机能够理解的指令来解决问题或完成特定任务的过程。这些指令通常被组织成算法,并使用某种编程语言实现。...

    黑马程序员Javase笔记

    "黑马程序员Javase笔记"是一个自学者在学习黑马程序员提供的Java全套课程过程中整理的笔记,主要涵盖了Java Standard Edition (Javase) 的核心内容。下面将详细讨论其中的关键知识点。 首先,DOS命令是操作系统中的...

    黑马程序员入学Java知识(精华总结)

    ### 黑马程序员入学Java知识(精华总结) #### 一、Java概述与基础知识 ##### 1、何为编程? 编程是指使用计算机语言来编写指令,这些指令被计算机执行以完成特定任务的过程。通过编程,我们可以控制计算机的行为...

    黑马程序员入学面试题

    Java中有许多内置的包、类和接口,如java.util、java.io、java.lang等。 #### 58. 常见异常 Java中定义了许多标准异常,如IOException、NullPointerException等。 以上是对给定文件中提及的知识点的详细解释,希望...

    Java-IO流高级-例题 & 例题源码 & PPT教学文档(黑马程序员详细版).rar

    本资料包“Java-IO流高级-例题 & 例题源码 & PPT教学文档(黑马程序员详细版).rar”提供了一个深入学习Java IO流的全面资源,包含实例题目、源代码以及PPT教学材料,适合对Java IO有进阶需求的开发者。 1. **Java ...

    java并发库高级应用源码--张孝祥

    Java提供了多种线程安全的数据结构,如`Atomic`系列类、`ConcurrentHashMap`等,它们在内部实现了线程安全,避免了外部同步的需要。 线程锁技术包括内置锁(也称为监视器锁)和显式锁。内置锁是`synchronized`的...

    黑马程序员入学Java知识

    ### 黑马程序员入学Java知识 #### Java概述与基础知识 1. **何为编程?** - 编程是通过特定的计算机语言来编写指令,让计算机执行一系列任务的过程。 2. **Java语言概述,历史、特点** - **概述**:Java是一种...

    黑马程序员JAVA面试宝典2018年5月最新版

    《黑马程序员JAVA面试宝典2018年5月最新版》是一本专门为Java开发者准备的面试指南,它集合了2018年5月时最新的面试知识点和业界趋势,旨在帮助Java程序员在求职过程中更好地应对各类技术面试。这本书可能涵盖了Java...

    Java-集合的例题 & 例题源码 & PPT教学文档(黑马程序员详细版).rar

    本资料包是黑马程序员提供的详细教程,涵盖了Java集合的例题、源码以及配套的PPT教学文档,旨在帮助学习者深入理解和掌握Java集合的使用。 首先,我们来探讨Java集合框架的基本概念。Java集合框架包括接口和实现类...

    集合-黑马程序员Java学习笔记

    本学习笔记由黑马程序员提供,旨在帮助初学者深入理解Java中的集合框架及其使用方法。 首先,我们来探讨“集合”的基本概念。在Java中,集合是一个对象容器,可以容纳多个元素,这些元素可以是任意类型的数据。Java...

    黑马java教程知识点笔记整理

    String类是Java中的核心类,用于处理字符串。字符串是不可变的,可以通过String类提供的各种方法进行操作,如concat()、substring()、indexOf()、replace()等。 【异常处理】 Java使用异常处理机制来处理运行时...

    2014黑马程序员JAVA基础测试题

    在内部类中可以直接使用外部类的成员,而在外部类中,需要通过创建内部类的对象来调用内部类的方法。 9. 拷贝.java文件并修改扩展名:可以使用Java的File和FileInputStream、FileOutputStream类,配合FileVisitor...

    JAVA第三章的课后习题答案

    类是Java中构造对象的蓝图,定义了对象的状态(数据成员)和行为(方法)。对象则是类的实例,它具有类定义的属性和行为。封装是面向对象的核心特性之一,通过访问控制修饰符(public, private, protected)实现数据...

Global site tag (gtag.js) - Google Analytics