`
hehaibo
  • 浏览: 416698 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

java基础-内部类之实例内部类1

阅读更多

1 内部类

内部类可分为成员内部类,局部内部类,成员内部类又可以分为静态和非静态的内部类。

2 任何内部类不能和外部内重名。

3 实例内部类的特点:

  (1) 在创建内部类的实例时,外部类的实例必须存在。

  (2) 实例内部类自动持有外部类的引用。在内部中,可以直接访问外部类的所有成员方法和成员变量。

  (3)在多重内部类嵌套中,内部类可以访问所有外部内的成员属性和方法。

class Outer {
    private String name="outer";
    public int num=10;
    //公开的内部类
    public class InnerTool {
       //定义一个内部类的静态常量PI
       public static final float PI=3.1415f;
       private int num=20;

       public int add(int a, int b) {
           System.out.println("访问外部内的私有成员属性,name="+name);
           System.out.println("访问内部类成员属性num="+this.num);
           System.out.println(Outer.this.num);
           return a + b;
       }
    }
    //私有的内部类成员变量
    private InnerTool innerTool = new InnerTool();
    public int area(int h,int w)
    {
       //获得PI常量
       return (int) (h*w*InnerTool.PI);
    }
    public int add(int a, int b) {
       return this.innerTool.add(a, b);
    }
}

class OuterA {
    public int a1;//公开
    private int a2;//私有
    static int a3;//静态

    public OuterA(int a1, int a2) {
       this.a1 = a1;
       this.a2 = a2;
    }
    protected int methodA() {
       return (int) (a1 * a2*InnerB.PI);
    }

    class InnerB {
       // 访问外部内的成员属性和方法
       static final float PI=3.14f;
       int b1 = a1;
       int b2 = a2;
       int b3 = a3;
       int b4 = new OuterA(3, 4).a1;
       int b5 = methodA();
       protected class InnerC
       {
           // static int cc=0; // 不能在内部类中定义静态的变量
           final static String name="InnerC";//可以定义静态的常量
           private void methodC()
           {
              methodA();//调用外部方法
           }
       }
    }
}

public class TestInner2 {
    public static void main(String[] args) {
       OuterA.InnerB ib =new OuterA(2,3).new InnerB();
       System.out.println("访问常量:"+OuterA.InnerB.PI);
       System.out.println("访问常量:"+OuterA.InnerB.InnerC.name);
       System.out.println("ib.b1="+ib.b1);
       System.out.println("ib.b2="+ib.b2);
    }
}
 

(4)外部类实例和内部类实例之间是一对多的关系,一个内部类只会引用一个外部类实例,

而一个外部类实例对应0个或多个内部内实例。在外部类中不能直接访问内部类的成员,必须通过内部类的实例去访问。

package innerclass;
import innerclass.A.B.C;
class A {
    static int C=0;
    class B {
       private int b1=1;
       private int b2=2;
       class C
       {
       }
    }
    public void test()
    {
       //int v1=b1;//不能直接访问Inner Class 的成员变量
       //int v2=b2;//不能直接访问Inner Class 的成员变量
       //B.C c1=new C();//不能访问内部类B的内内部类C
       B b =new B();
       int b1 =b.b1;
       int b2=b.b2;

       C c = b.new C();

       C c2= new B().new C();
    }
}
 

在以上类B中还有类C A 不能直接方法类C应该通过类B去访问类C

(5) 在实例内部类中不能定义静态成员变量,可以定义常量.可以定义实例成员。

(6) 如果实例内部类B与外部内包含同名的属性v,那么在类B,this.v表示B的成员,

A.this.v表示类A的成员.

 

分享到:
评论

相关推荐

    java语言--内部类总结

    《Java语言——内部类详解》 内部类是Java语言中一个独特且强大的特性,它允许我们在一个类的内部定义另一个类。内部类可以提供更复杂的封装,使得代码结构更加清晰,同时还能访问外部类的私有成员,提供了更高级别...

    Java语法总结 - 内部类

    Java内部类详解 Java内部类是Java语言中的一种特殊类别,它是指定义在另外一个类内部的类。内部类可以访问外部类的所有成员变量和方法,包括私有的变量和方法。内部类可以分为四种:成员内部类、静态嵌套类、方法...

    java基础第七章-内部类与异常类.doc

    Java 基础第七章 -内部类与异常类 本章节主要讲解 Java 的内部类和异常类的概念、特点、使用方法和注意事项。 内部类 ------ 内部类是 Java 支持的一种特殊类,定义在另一个类的内部。内部类和外嵌类之间存在关系...

    Java中内部类的实例化

    Java 内部类 实例化 在Outer类的静态方法中实例化内部类 在同一个包的其它类中实例化Outer类中的内部类

    JAVA语法总结 - 内部类

    1. **实例化**:只能在定义它的方法内部实例化。 2. **访问限制**:不能访问该方法内的非final局部变量,因为局部变量是临时的,只存在于该方法执行过程中。 #### 六、匿名内部类 匿名内部类是没有名字的内部类,...

    java源码包---java 源码 大量 实例

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    大学课程讲义-Java基础-高级类特性.pptx

    Java 基础-高级类特性 本资源摘要信息涵盖了 Java 编程语言的高级类特性,包括 static 关键字、final 关键字、抽象类、接口、内部类等知识点。 1. static 关键字 static 关键字是 Java 中的一个关键字,用于修饰...

    java 内部类 局部内部类 匿名类 实例代码

    1. **实例内部类**:这是最常见的内部类形式,它在外部类的实例方法或成员位置定义。实例内部类可以访问外部类的所有成员,包括私有成员。以下是一个简单的实例内部类的例子: ```java public class Outer { ...

    编程语言-Java语言-关于内部类的分类和认识

    Java语言中的内部类根据定义的位置和访问权限可以分为四类:成员内部类、局部内部类、匿名内部类和静态内部类。成员内部类是定义在类的内部且与类的实例相关联的类;局部内部类是定义在方法或作用域内的类;匿名内部...

    JAVA 内部类 PPT

    Java内部类是Java语言的一个独特特性,它允许我们在一个类的内部定义另一个类。这种设计提供了更高级别的封装和组织代码的方式。以下是关于内部类及其相关知识点的详细说明: 1. **内部类基本语法** - **实例内部...

    java基础第七章内部类与异常类.doc

    Java 基础第七章内部类与异常类 Java 语言支持在一个类中定义另一个类,这样的类称做内部类。内部类和外嵌类之间存在着紧密的关系:内部类可以访问外嵌类的成员变量和方法,而外嵌类也可以使用内部类声明的对象作为...

    【IT十八掌徐培成】Java基础第05天-02.final-内部类.zip

    总的来说,Java的内部类是其强大的面向对象特性之一,它为代码结构提供了一种更加灵活和高效的方式,使得我们可以更好地管理和组织代码,实现更复杂的逻辑。在实际开发中,灵活运用内部类可以提高代码的可读性和可...

    java-内部类(InnerClass)详解.pdf

    Java 内部类,也称为嵌套类,是Java编程语言中的一种特殊特性,它允许一个类被定义在另一个类的内部。内部类分为几种类型,包括静态成员类(Static member class)、局部内部类(Local inner class)、匿名内部类...

    Java基础精品课14-常用类1录屏3.实例内部类.mp4

    Java基础精品课14-常用类1录屏3.实例内部类.mp4

    计算机后端-Java-Java核心基础-第15章 面向对象07 26. 如何实例化成员内部类.avi

    计算机后端-Java-Java核心基础-第15章 面向对象07 26. 如何实例化成员内部类.avi

    java内部类总结(含概念和实例)

    Java 内部类总结 Java 内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内部类可为静态,可用 protected 和 private 修饰(而外部类只能使用 public 和缺省的包...

    java 内部类的实例详解

    Java内部类是Java语言中一个独特且强大的特性,它允许在一个类的定义内定义另一个类。内部类可以分为四种类型:成员内部类、局部内部类、匿名内部类和静态内部类。下面我们将深入探讨内部类的使用方法和优势。 首先...

    java(Day12)---内部类

    Java中的内部类是一种特殊的类,它可以被定义在一个外部类的内部。这种设计允许内部类访问外部类的所有成员,包括私有成员,增强了代码的封装性和灵活性。内部类主要有四种类型:成员内部类、静态内部类、局部内部类...

    java内部类详解

    Java 内部类详解 Java 内部类是一种高级特性,允许在一个类的定义内部创建另一个类。这种设计模式提供了更灵活的代码组织方式,同时还可以实现特定的封装和访问控制。内部类主要分为四种类型:静态内部类、成员内部...

    java基础java内部类

    (1) 每个内部类实例都有自己的状态信息,与其他外围对象的状态信息相互独立。 (2) 同一个外围类中,可以有多个内部类以不同方式实现同一个接口,或者继承同一个类,增加了代码的多样性。 (3) 内部类对象的创建时机并...

Global site tag (gtag.js) - Google Analytics