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 支持的一种特殊类,定义在另一个类的内部。内部类和外嵌类之间存在关系...
Java 内部类 实例化 在Outer类的静态方法中实例化内部类 在同一个包的其它类中实例化Outer类中的内部类
1. **实例化**:只能在定义它的方法内部实例化。 2. **访问限制**:不能访问该方法内的非final局部变量,因为局部变量是临时的,只存在于该方法执行过程中。 #### 六、匿名内部类 匿名内部类是没有名字的内部类,...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
Java 基础-高级类特性 本资源摘要信息涵盖了 Java 编程语言的高级类特性,包括 static 关键字、final 关键字、抽象类、接口、内部类等知识点。 1. static 关键字 static 关键字是 Java 中的一个关键字,用于修饰...
1. **实例内部类**:这是最常见的内部类形式,它在外部类的实例方法或成员位置定义。实例内部类可以访问外部类的所有成员,包括私有成员。以下是一个简单的实例内部类的例子: ```java public class Outer { ...
Java语言中的内部类根据定义的位置和访问权限可以分为四类:成员内部类、局部内部类、匿名内部类和静态内部类。成员内部类是定义在类的内部且与类的实例相关联的类;局部内部类是定义在方法或作用域内的类;匿名内部...
Java内部类是Java语言的一个独特特性,它允许我们在一个类的内部定义另一个类。这种设计提供了更高级别的封装和组织代码的方式。以下是关于内部类及其相关知识点的详细说明: 1. **内部类基本语法** - **实例内部...
Java 基础第七章内部类与异常类 Java 语言支持在一个类中定义另一个类,这样的类称做内部类。内部类和外嵌类之间存在着紧密的关系:内部类可以访问外嵌类的成员变量和方法,而外嵌类也可以使用内部类声明的对象作为...
总的来说,Java的内部类是其强大的面向对象特性之一,它为代码结构提供了一种更加灵活和高效的方式,使得我们可以更好地管理和组织代码,实现更复杂的逻辑。在实际开发中,灵活运用内部类可以提高代码的可读性和可...
Java 内部类,也称为嵌套类,是Java编程语言中的一种特殊特性,它允许一个类被定义在另一个类的内部。内部类分为几种类型,包括静态成员类(Static member class)、局部内部类(Local inner class)、匿名内部类...
Java基础精品课14-常用类1录屏3.实例内部类.mp4
计算机后端-Java-Java核心基础-第15章 面向对象07 26. 如何实例化成员内部类.avi
Java 内部类总结 Java 内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内部类可为静态,可用 protected 和 private 修饰(而外部类只能使用 public 和缺省的包...
Java内部类是Java语言中一个独特且强大的特性,它允许在一个类的定义内定义另一个类。内部类可以分为四种类型:成员内部类、局部内部类、匿名内部类和静态内部类。下面我们将深入探讨内部类的使用方法和优势。 首先...
Java中的内部类是一种特殊的类,它可以被定义在一个外部类的内部。这种设计允许内部类访问外部类的所有成员,包括私有成员,增强了代码的封装性和灵活性。内部类主要有四种类型:成员内部类、静态内部类、局部内部类...
Java 内部类详解 Java 内部类是一种高级特性,允许在一个类的定义内部创建另一个类。这种设计模式提供了更灵活的代码组织方式,同时还可以实现特定的封装和访问控制。内部类主要分为四种类型:静态内部类、成员内部...
(1) 每个内部类实例都有自己的状态信息,与其他外围对象的状态信息相互独立。 (2) 同一个外围类中,可以有多个内部类以不同方式实现同一个接口,或者继承同一个类,增加了代码的多样性。 (3) 内部类对象的创建时机并...