`
jie_bosshr
  • 浏览: 142965 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

java内部类用法解析

阅读更多
定义:一个类的定义放在另一个类的内部,这个类就叫做内部类。
java内部类分为:成员内部类、方法内部类、静态内部类、嵌套类。
package com.hmkcode;

/**
 * 成员内部类用法
 * 1链接到外部类: 创建了内部类对象时,它会与创造它的外围对象有了某种联系,于是能访问外围类的所有成员,不需任何特殊条件。
 * 2内部类可以使用外部类的成员实现:用外部类创建内部类对象时,此内部类对象会秘密的捕获一个指向外围类的引用.于是,可以通过这个引用来访问外部类的成员。
 * 3创建内部类对象时,必须与外围类对象相关联。(嵌套类除外)
 */
public class MemberInnerClass 
{	
	//定义外部类成员变量outerNum
	private int outerNum;
	
	//外部类无参构造器
	public MemberInnerClass(){}
	
	//外部类有参构造器
	public MemberInnerClass(int outerNum)
	{
		this.outerNum = outerNum;
	}
	
	//声明一个外部类方法
	public void outerFunction(){
		System.out.println("outerNum:"+outerNum);
	}
	
	//得到内部类的实例
	public Inner getInner(int innerNum){
		return new Inner(innerNum);
	}
	
	public class Inner
	{
		//定义内部类成员变量innerNum
		private int innerNum;
		
		//内部类无参构造器
		public Inner(){}
		
		//内部类有参构造器
		public Inner(int innerNum)
		{
			this.innerNum = innerNum;
		}
		
		//使用.this得到外部类对象的引用
		public MemberInnerClass getThisMemberInsideClass()
		{
			return MemberInnerClass.this;
		}
		
		//使用.new得到外部类对象的引用
		public MemberInnerClass getNewMemberInsideClass()
		{
			return new MemberInnerClass();
		}
		
		//调用外部类MemberInsideClass的方法outerFunction
		public void getOuterNum()
		{
			outerFunction();
		}
		
		//调用外部类MemberInsideClass的成员变量outerNum
		public void getOuterNum1(){
			System.out.println("outerNum:"+MemberInnerClass.this.outerNum);
		}
		
		//输出内部类的成员变量innerNum
		public void getInnerNum(){
			System.out.println("innerNum:"+innerNum);
		}
	}
	
	
	public static void main(String[] args) 
	{
		//实例化一个外部类
		MemberInnerClass outer = new MemberInnerClass(5);
		//通过外部类的对象来创建一个内部类的对象
		MemberInnerClass.Inner inner = outer.new Inner(6);
		//通过调用外部类的方法outerFunction输出成员变量outerNum
		inner.getOuterNum();
		//直接调用外部类MemberInsideClass的成员变量outerNum
		inner.getOuterNum1();
		//获取指向内部类的一个引用,调用内部类的方法getInnerNum()输出内部类的成员变量innerNum
		outer.getInner(6).getInnerNum();
	}

}

方法内部类用法解析
package com.hmkcode;

/**
 * 方法内部类调用解析
 * 1:方法内部类只能在定义该内部类的方法内实例化,不可以在此方法外对其实例化。
 * 2:方法内部类对象不能使用该内部类所在方法的非final局部变量。
 * 3:方法内部类不能定义修饰符。
 * 因为方法的局部变量位于栈上,只存在于该方法的生命期内。当一个方法结束,其栈结构被删除,局部变量成为历史。
 * 但是该方法结束之后,在方法内创建的内部类对象可能仍然存在于堆中!例如,如果对它的引用被传递到其他某些代码,
 * 并存储在一个成员变量内。正因为不能保证局部变量的存活期和方法内部类对象的一样长,所以内部类对象不能使用它们。
 */
public class MethodInnerClass {
	//定义一个final的成员常量str
	private final String str = "test";
	
	//定义外部类方法doSomeing,在此方法中定义内部类Inner
	public void doSomeing(){
		//定义一个final的成员常量num
		final int num = 10;
		//定义一个成员变量count
		int count;
		class Inner
		{
			//输出外部类的成员常量num
			public void getOuterField()
			{
				System.out.println(num);
			}
			
			//调用外部类的成员方法getStr
			public void getOuterMethod(){
				getStr();
			}
			
			//内部类不能使用方法的变量count
			public void getOuterCount(){
				//System.out.println(count);
			}
		}
		//创建内部类的一个实例
		Inner inner = new Inner();
		inner.getOuterField();
		inner.getOuterMethod();
	}
	
	//定义外部类方法getStr
	public void getStr(){
		System.out.println("str:"+str);
	}
	
	public static void main(String[] args) {
		//创建外部类MethodInnerClass的实例
		MethodInnerClass outer = new MethodInnerClass();
		//调用自己的成员方法
		outer.doSomeing();
	}

}
分享到:
评论

相关推荐

    java内部类详解

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

    java内部类的讲解

    ### Java内部类详解 #### 一、内部类的分类与概念 Java的内部类机制是其强大特性之一,它允许类作为另一个类的成员存在,从而增强了代码的封装性和复用性。根据定义和作用域的不同,Java内部类主要分为四类: 1. ...

    Java语法总结 - 内部类

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

    java 内部类的实例详解

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

    java内部类应用详解

    Java内部类是Java语言中一个独特且强大的特性,它允许我们在一个类的内部定义另一个类。内部类可以作为外部类的成员,具有访问外部类的所有域的权限,无论是public、protected还是private。这种访问能力使得内部类能...

    java内部类详解共10页.pdf.zip

    本资料"java内部类详解共10页.pdf.zip"显然是一个详细探讨Java内部类的教程,包含10页内容。虽然无法在这里直接提供PDF的具体内容,但我们可以根据通常内部类的讲解内容进行详述。 1. **什么是内部类:** 内部类...

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

    Java内部类是Java语言特性中一个独特而强大的部分,它允许在一个类的内部定义另一个类。内部类可以访问外部类的所有成员,包括私有成员,这使得内部类在实现某些特定设计模式时非常有用。本篇文章将深入探讨Java中的...

    有关JAVA的内部类的好东西

    本篇文章将深入探讨Java内部类的种类、用法及其优势。 1. **内部类的种类**: - **成员内部类**:定义在类的主体中的类,可以是静态或非静态的。非静态内部类(也称为实例内部类)与外部类的实例紧密关联,而静态...

    java内部类解析.pdf

    Java内部类是Java编程语言中的一个特色特性,它允许在一个类的定义内部定义另一个类。自Java 1.1引入内部类以来,这种特性一直备受争议。内部类提供了访问外部类私有成员的能力,但如果不恰当使用,可能导致代码难以...

    Java 深入理解嵌套类和内部类

    Java 嵌套类和内部类详解 Java 中的嵌套类和内部类是指在一个类的内部定义另一个类,这种类称为嵌套类(nested classes)。嵌套类有两种类型:静态嵌套类和非静态嵌套类。静态嵌套类使用很少,非静态嵌套类也即被称...

    Java内部类总结

    ### Java内部类详解 #### 一、什么是内部类? 内部类,顾名思义,是在另一个类的内部定义的类。这种独特的结构让内部类能够访问包含它的外部类的私有成员,包括变量和方法。这为编程提供了一种封装更紧密、功能更...

    java内部类解析.......

    ### Java内部类解析 #### 什么是Java内部类? 在Java中,内部类是一个在其另一个类的内部声明的类。这种内部关系意味着内部类是外部类的一部分,并且可以访问外部类的所有成员,包括私有成员。这为Java提供了一种...

    Java内部类(DOC)

    ### Java内部类(DOC)详解 #### 一、概述 Java内部类是Java语言中一个重要的概念,它指的是那些类定义被嵌套在其他类定义中的类。与之相对应的是顶层类,即那些类定义没有被嵌套在其他类中的类。内部类又可以...

    Java内部类详解.pdf

    以下是对Java内部类的详细解释: 1. **定义**: 内部类(也称为嵌套类)是在另一个类的定义内声明的类。在给定的例子中,`Contents`是`First`类的内部类。在Java代码中,我们可以看到`Contents`被定义在`First`类...

    java静态内部类(嵌套类)

    ### Java静态内部类(嵌套类)详解 #### 一、静态内部类概念与特性 在Java编程语言中,静态内部类(也被称为嵌套类)是一种特殊的内部类形式,它通过`static`关键字来定义。与普通内部类相比,静态内部类具有以下...

    Java内部类的作用

    ### Java内部类的作用 #### 一、定义及概念 内部类,顾名思义,指的是一个定义在另一个类内部的类。这样的结构让内部类能够访问外部类的成员(包括私有成员),并且允许内部类拥有不同的访问级别,如`private`、`...

Global site tag (gtag.js) - Google Analytics