一、内部类详解

本文详细介绍了Java中的内部类,包括成员内部类、局部内部类和静态内部类。成员内部类如同外部类的成员,依赖外部类对象存在;局部内部类仅在方法内定义,作用域受限;静态内部类不依赖外部类对象,可直接创建。通过示例代码展示了各类内部类的使用方法和特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、内部类

内部类简介:

       概念:在一个类内部再定义一个完整的类。
       一般情况下类与类之间是相互独立的,内部类的意思就是打破这种独立思想,让一个类成为另一个类的内部信息,和成员变量、成员方法同等级别。
  • 内部类的好处:
    • 采用内部类这种技术,可以隐藏实现细节和内部结构,封装性更好,让程序的结构更加合理!如果类很多且都暴露在外面,那么类与类之间的调用就会十分繁琐!

1.成员内部类(非静态内部类)

Demo 代码示例:

	// 外部类
	public  class OuterClass {
	
	    //成员变量
	    private String OuterName; // 没赋值,默认为null
	
	    //成员方法
	    public void OuterDisplay(){
	        System.out.println("这是外部类方法!");
	        System.out.println(OuterName);
	    }
	
	    //内部类,在外部类的里面定义
	    public class InnerClass{
	
	        //成员变量
	        private String InnerNme;
	
	        //构造方法
	        public InnerClass() {
	            InnerNme = "Inner Class";  // 给内部类成员变量赋值
	        }
	
	        //成员方法
	        public void InnerDisplay(){
	            System.out.println("这是内部类方法!");
	            System.out.println(InnerNme);
	
	        }
	    }
	
	    // 主方法
	    public static void main(String[] args) {
	
	        //创建外部类的类对象
	        OuterClass outerClass = new OuterClass();
	
	        //通过外部类类对象调用外部类的成员方法
	        outerClass.OuterDisplay();//这是外部类方法! null
	
	        // 这个类是内部类,已经不是独立的类了,因此不能像外部类一样直接创建!
	        //InnerClass innerClass = new InnerClass(); 行不通
	        //外部类.内部类  内部类对象名 = 外部类对象.new 内部类构造方法();用外部类.内部类的形式创建对象便可以了
	        OuterClass.InnerClass innerClass = outerClass.new InnerClass();
	        innerClass.InnerDisplay();// 这是内部类方法!  Inner Class
	    }
	}

输出结果:

		这是外部类方法!
		null
		这是内部类方法!
		Inner Class

总结:成员内部类(非静态内部类)的使用就是将内部类作为外部类的一个成员变量/成员方法来使用,所以必须依赖于外部类的对象才能调用,用法和成员变量/成员方法一致!


2.局部内部类

  • 局部内部类:基本的内部类还可以在一个方法体中定义。

Demo 代码示例:

				public class OuterClass {
				    //成员变量
				    private String OuterName;
				    //成员方法
				    public void display(){
				        class InnerClass {
				            public void print(){
				                System.out.println("这是一个局部内部类方法!");
				            }
				        }
				        InnerClass innerClass = new InnerClass();
				        innerClass.print();
				    }
				
				    // 主方法
				    public static void main(String[] args) {
				        OuterClass outerClass = new OuterClass();
				        outerClass.display();
				    }
				}

3.静态内部类

  • 静态内部类的构造不需要依赖于外部类对象,类中的静态组件都不需要依赖于任何对象,可以直接通过类本身进行构造。

Demo 代码示例:

			package NeiBuLei;
			
			public class OuterClass {
			    //成员变量
			    private String OuterName;
			    //成员方法
			    public void display(){
			        System.out.println("这是外部类方法!");
			        System.out.println(OuterName);
			    }
			    //静态内部类
			    public static class InnerClass{
			        private String InnerName;
			
			        public InnerClass() {
			            InnerName = "Inner Class";
			        }
			
			        //成员方法
			        public void display(){
			            System.out.println("这是静态内部类方法!");
			            System.out.println(InnerName);
			        }
			    }
	
				    // 主方法
				    public static void main(String[] args) {
				        OuterClass outerClass = new OuterClass();
				        outerClass.display();
				        // 静态内部类的构造不依赖与外部类,可以直接通过类本身进行构造!
				        InnerClass innerClass = new InnerClass();
				        innerClass.display();
				    }
				
				}

输出结果:

		这是外部类方法!
		null
		这是静态内部类方法!
		Inner Class


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值