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 内部类 实例化 在Outer类的静态方法中实例化内部类 在同一个包的其它类中实例化Outer类中的内部类
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
Java语言中的内部类根据定义的位置和访问权限可以分为四类:成员内部类、局部内部类、匿名内部类和静态内部类。成员内部类是定义在类的内部且与类的实例相关联的类;局部内部类是定义在方法或作用域内的类;匿名内部...
java 内部类 实例内部类 局部内部类 匿名类 静态内部类 实例代码
Java基础精品课14-常用类1录屏3.实例内部类.mp4
计算机后端-Java-Java核心基础-第15章 面向对象07 26. 如何实例化成员内部类.avi
最全面的java内部类总结,概念和实例帮助深入理解!
实例068 匿名内部类的简单应用 104 实例069 静态内部类的简单应用 105 实例070 实例化Class类的几种方式 107 实例071 查看类的声明 108 实例072 查看类的成员 110 实例073 查看内部类信息 112 实例074 动态设置类的...
主要介绍了Java创建内部类对象实例详解的相关资料,需要的朋友可以参考下
CoreJava DAY06 类的加载过程、实例化、继承、多态 20 CoreJava DAY07修饰符 26 CoreJava DAY08 常用类 29 CoreJava DAY09 高级语言特征 30 CoreJava DAY10 主方法,静态导入,包装类,枚举 32 CoreJava DAY11 内部...
java静态内部类(嵌套类)的实例 。嵌套类意味着: 1. 要创建嵌套类的对象,并不需要其外围类的对象。 2. 不能从嵌套类的对象中访问非静态的外围类对象。
主要介绍了 Java 基础之内部类详解及实例的相关资料,需要的朋友可以参考下
java内部类使用例子,可以运行
Java接口和内部类的介绍与代码实例 public interface school { void setschoolname(); void setclassname(); void setstudentname(); void setstudentcode(); void setstudentsexy(); void setstudentbirthday(); ...
java100例之实例21 内部窗体(java绝对新手实例)
建议读者在阅读前具备Java的基础知识,包括类、对象、方法和成员变量等概念。 在阅读过程中,尝试编写简单的Java程序,使用static关键字定义和调用静态成员变量和静态方法。 建议通过阅读相关的Java教材或搜索资料,...
《Java 基础核心总结》 Java 概述 什么是 Java2 Java 的特点Java 开发环境 JDK JRE Java 开发环境配置 Java 基本语法 数据类型基础语法运算符 Java 执行控制流程条件语句 if 条件语句 if...else 条件语句if...else ...
4种类型的内部类的实例,每一种类型内部类的定义,实例化,引用等,是学习内部类的好的实例资料!
主要介绍了java 中匿名内部类的实例详解的相关资料,这里提供实例来帮助大家学习理解这部分内容,需要的朋友可以参考下
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...