`
yushu1987
  • 浏览: 16534 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

内部类访问外部类域和方法

阅读更多
    在外部类中定义内部类,我们可以认为内部类是外部类的一些域和方法的集合,而内部类也可以访问外部类的域和方法。还是以上篇代码为为了,稍微修改一下。
package Thinking;

public class InnerAccess{
	private int i;
	private String name;	
	public InnerAccess(int i,String name){
		this.i=i;
		this.name=name;
	}
	
	public void getmsg(){
		System.out.println("outer");
	}
	public int geti(){
		return i;
	}
	public String getname(){
		return name;
	}
	
	public class Inner{
		private int i;
		private String name;
		public Inner(int i,String name){
			this.i=i;
			this.name=name;
		}
		public void getmsg(){
			InnerAccess.this.getmsg();
			System.out.println(InnerAccess.this.name+":"+InnerAccess.this.i);
			System.out.println(InnerAccess.this.getname()+":"+InnerAccess.this.geti());
			System.out.println("inner");
			System.out.println(name+":"+i);
			System.out.println(getname()+":"+geti());
		}
		public int geti(){
			return i;
		}
		public String getname(){
			return name;
		}
	}
	
	public static void main(String[] args){
		InnerAccess access=new InnerAccess(1,"hust");
		Inner inner=access.new Inner(2,"wang");
		inner.getmsg();
	}
}
//output
outer
hust:1
hust:1
inner
wang:2
wang:2

   内部类中的所有域和所有方法都覆盖了外部类的域和方法,在内部类中要访问外部类的域和方法时,需要不同的调用方式。如InnerAccess.this.域和InnerAccess.this.方法,这是内部类访问外部类被覆盖的域和方法的机制。
分享到:
评论

相关推荐

    Java的内部类讲解案例代码(成员内部类、局部内部类、匿名内部类、静态内部类、外部类访问四种内部类、其他类访问四种内部类...)

    内部类的作用域仅限于其外部类,可以访问外部类的成员,同时又能保护类的封装性。 目标: 通过这个源码资源,你将学会以下内容: - 内部类的定义和语法 - 如何在外部类中访问和操作内部类 - 不同类型的内部类(静态...

    java中内部类与外部类的学习资料.docx

    - B:外部类无法直接访问局部内部类,因为局部内部类只在其定义的方法作用域内可见。 4. **内部类的分类**: - **成员内部类**:分为实例内部类和静态内部类。 - **局部内部类**:定义在方法内部的临时类,不...

    java 内部类使用(内部匿名类)

    非静态内部类拥有对外部类的引用,可以直接访问外部类的所有成员,包括私有成员。而静态内部类不持有对外部类的引用,因此只能访问外部类的静态成员。 2. **内部匿名类**:内部匿名类没有名字,通常用于创建一次性...

    java内部类详解

    成员内部类可以访问外部类的所有成员,包括私有成员和静态成员。创建成员内部类的实例需要先创建外部类的实例,如 `(new Outerclass()).new Innerclass();`。在内部类中访问外部类的成员可以使用 `Outerclass.this` ...

    Java内部类.pdf

    Java内部类是指定义在另一个类内部的类,它可以访问外部类的属性和方法。在Java中,内部类提供了更精细的控制,可以使得类的封装性更强,设计更为隐蔽和安全。以下是对标题中"Java内部类.pdf"文件的知识点进行的详细...

    JAVA 内部类 PPT

    - **局部内部类**:定义在方法、构造器或块中的类称为局部内部类,它的作用域仅限于该方法、构造器或块。 - **匿名类**:没有名字的内部类,通常用于一次性实现某个接口或父类的简单功能。 2. **内部类继承** - ...

    java语言--内部类总结

    - 成员内部类:作为外部类的成员,与外部类的字段和方法并列存在。它可以访问外部类的所有成员,包括私有成员。成员内部类不能包含静态成员,但可以访问外部类的静态成员。 - 局部内部类:定义在方法或代码块内部...

    java内部类的讲解

    - **更精细的访问控制**:内部类可以访问外部类的私有成员,这提供了更精细的封装和数据隐藏能力。 #### 三、示例解析 在提供的代码片段中,`JobIterator1.java`展示了内部类的实际应用。其中`Employee`类包含了一...

    Java内部类总结,内部类的共同特征,内部类的分类等

    3. 内部类声明成静态的,就不能随便的访问外部类的成员变量了,此时内部类只能访问外部类的静态成员变量。 4. 外部类不能直接访问内部类的成员,但可以通过内部类对象来访问。 二、内部类的分类 1. 成员内部类:即...

    java内部类使用总结

    - 当实例内部类与外部类有相同名称的变量或方法时,会存在隐藏现象,需要通过`外部类.this`来访问外部类的成员。 3. **静态内部类的特点** - 静态内部类不依赖于外部类的实例,可以直接通过外部类的类名来创建它...

    java 内部类应用

    3. 使用限制:静态内部类无法直接访问外部类的非静态成员,局部内部类和匿名内部类的作用域有限。 总结,Java内部类是一种强大的工具,能够帮助我们更好地组织代码、实现复杂的逻辑和接口。但使用时也需谨慎,避免...

    内部类的分类及各自用法

    成员内部类(也称为非静态内部类)是定义在一个外部类中的成员类,它可以访问外部类的所有成员变量和方法,包括私有成员。成员内部类的一个显著特点是它与外部类有着密切的联系,这使得它非常适合用来表达一种“整体...

    java代码笔记2010-06-01:Java内部类 静态内部类 局部内部类 明明内部类;StringBuffer reverse的使用;

    成员内部类可以直接访问外部类的所有成员,包括私有成员。这是因为成员内部类对象在外部类对象内部创建,它们之间有隐含的引用关系。这种类通常用于实现特定的逻辑或者封装与外部类紧密关联的数据。 3. **局部内部...

    第11章 内部类(Inner class).ppt

    - 内部类可以直接访问外部类的所有成员,包括私有成员,这是内部类的一个重要特性,可以用于实现紧密耦合的组件。 6. **内部类的实例化**: - 创建内部类的实例需要外部类的实例引用,对于非静态内部类,语法为 `...

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

    内部类可以访问外部类的所有成员,包括私有成员,这使得内部类在实现某些特定设计模式时非常有用。本篇文章将深入探讨Java中的四种内部类:实例内部类、局部内部类、匿名类和静态内部类,并通过实例代码进行详细解析...

    java 静态内部类的使用规范

    - 静态内部类可以访问外部类的所有静态成员,包括私有静态成员。 - 它不能直接访问外部类的非静态成员,但可以通过创建外部类的对象来间接访问。 **3. 使用场景** - **节省命名空间**:当需要定义多个紧密相关的类...

    有关JAVA的内部类的好东西

    - **访问外部类的成员**:内部类可以直接访问外部类的私有成员,这是内部类的一大特点,可以用来封装数据和实现更复杂的设计。 - **实现多态**:内部类可以实现接口,从而创建多重继承的效果,尽管Java不支持类的...

    内部类示例源码

    成员内部类就像普通的类成员,可以是静态的或非静态的,它可以访问外部类的所有成员,包括私有成员。这种类型的内部类可以在类的任何地方实例化,只要外部类的对象已经存在。通过外部类的对象,我们可以创建内部类的...

    Java 内部类

    成员内部类,顾名思义,就像类的其他成员(如字段和方法)一样,存在于类的主体中。成员内部类可以直接访问外部类的所有成员,包括私有成员。例如: ```java public class OuterClass { private int outerField = ...

    内部类(专题).doc

    实例内部类是成员内部类的一种,它没有static修饰符,这意味着每个外部类的实例都可以有自己的实例内部类对象,且实例内部类的对象可以访问外部类的实例变量和方法。在`A`类的`B`内部类示例中,`B`可以直接访问`A`的...

Global site tag (gtag.js) - Google Analytics