Think in Java(七):内部类

1. 内部类访问外部类的成员变量:Outer.this.size

public class Outer {
	private int size;

	public class Inner1 {
		private int size;
		public void display(int size) {
			size++; // 引用的是display函数的形参
			this.size++; // 引用的是Inner类中的成员变量
			Outer.this.size++; // 引用的是Outer类中的成员变量
		}
	}
}

2. 内部类如何被外部引用:Outer.Inner inner = outer.new Inner()

要创建一个内部类的实例对象,必须先创建一个外部类的实例对象

public class TestInner {
	public static void main(String[] args) {
		Outer outer = new Outer();
		Outer.Inner inner = outer.new Inner();
		inner.display();
	}
}

class Outer{
	private int size = 10;
	public class Inner{
		public void display(){
			System.out.println(size);
		}
	}
}

3. 在方法中定义的内部类如果要访问方法中的局部变量,局部变量必须声明为final

public class Outer {
	public void test(){
		final int x = 0;
		class Inner {
			void display(){
				System.out.println(x);
			}
		}
	}
}

4. 外部类可以直接访问静态内部类,无需创建外部类对象

class Outer {
	static class Inner{

	}
}

public class Test{
	public static void main(String[] args) {
		Outer.Inner inner = new Outer.Inner();
	}
}
时间: 2024-10-14 11:57:52

Think in Java(七):内部类的相关文章

Java的内部类

提起Java内部类(Inner Class)可能很多人不太熟悉,实际上类似的概念在C++里也有,那就是嵌套类(Nested Class),关于这两者的区别与联系,在下文中会有对比.内部类从表面上看,就是在类中又定义了一个类(下文会看到,内部类可以在很多地方定义),而实际上并没有那么简单,乍看上去内部类似乎有些多余,它的用处对于初学者来说可能并不是那么显著,但是随着对它的深入了解,你会发现Java的设计者在内部类身上的确是用心良苦.学会使用内部类,是掌握Java高级编程的一部分,它可以让你更优雅地

JAVA的内部类学习总结

这几天看书,开始在前面看到了JAVA的内部类,开始以为往后看,可以看懂,结果看到了时间监听那里也没有看懂. 再说自己写JAVA代码有个毛病,可能是写C++和C语言写多了,就是喜欢把每一个类都单独的写在一个文件里面. 根本就不存在嵌套或者是一个文件写有几个类的问题. 接下俩给大家总结内部类的含义,以及使用. 这里还分享几个不错的博客: http://www.cnblogs.com/nerxious/archive/2013/01/24/2875649.html http://android.blo

java:内部类

内部类定义方法: class A { class B { } } 编译后将生成:A.class 和 A$B.class 内部类B可以使用外部类A的成员变量和成员属性 生成内部类对象: 先生成外部类对象.再生成内部类 class Test { public static void main(String args[]){ A a = new A(); A.B b = new A().new B(); // 或 a.new B(); } } 匿名内部类:没有名字 interface A { publ

Java面向对象㈢ -- 内部类

内部类必须要依赖于继承或实现一个接口.内部类可以实现Java多继承,内部类访问外表类的局部变量或参数时,则该局部变量或参数必须被final修饰.内部类不能包含有static的变量和方法,原因是因为内部类依赖于外部类,它才能创建自己.内部类可以任意的访问外部类的成员,即使以private修饰,内部类需要通过外部类来访问.内部类的形式可以有继承,实现和参数式.访问外部类时使用外部类名.this.内部类编译后文件名是外部类$内部类.同时还有一个匿名内部类,直接new()加所要使用的函数.内部类可以出现

黑马程序员——java基础——内部类

 黑马程序员--java基础--内部类 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 内部类 如果A类需要直接访问B类中的成员,而B类又需要建立A类的对象.这时,为了方便设计和访问,直接将A类定义在B类中.就可以了.A类就称为内部类.内部类可以直接访问外部类中的成员.而外部类想要访问内部类,必须要建立内部类的对象. 内部类的访问规则 1,内部类可以直接访问外部类中的成员,包括私有. 之所以可以直接访问外部类中的成员,是因为内部类中持有

java中内部类的创建四种情况,三种方式,及内部数据访问权限

内部类和外部类的关系,及内部静态类的数据访问权限,声明方式. 第一种,在外部类内部声明使用内部类,内部类的类型为static和非 static类型,内部类数据类型为private,protected,public 类型的访问权限.外部类为非静态声明和权限如下: package com; public class Test1 { //@author 张春蕾 private class Name{ private int i =1; public int s = 2; protected int m

Java中内部类

内部类的规则: 1.内部类可以直接访问外部类中的成员,包括私有. 之所以可以直接访问外部类中的成员,是因为内部类中持有一个外部类的引用,格式:外部类名.this 2.外部类要访问内部类,必须建立内部类对象 访问格式: 1.当内部类定义在外部类的成员位置了,而且非私有,可以在外部其他类中. 可以直接建立内部类对象. 格式: 外部类类名.内部类名  变量名= new 外部类对象.new 内部类对象. Outer.inner out = new Outer().new inner(); 2.当内部类在

java:内部类与外部类的区别和联系

注意事项一:在内部类中可以随意使用外部类的成员方法以及成员变量. 众所周知,在定义成员方法或者成员变量的时候,可以给其加上一些权限的修饰词,以防止其他类的访问.如在成员变量或者成员方法前面,加上Private 关键字,则其他类就无法调用这个类中的成员方法或则和成员变量.但是,如果这个类有成员内部类,则不受这方面的限制.也就是说,在成员内部类中可以随意引 用外部类的成员方法以及成员变量,即使这些类成员方法或者成员变量被修饰了private.如在成员外部类中定义了一个i变量,并且利用private关

Java学习--内部类(一)

Java学习--内部类(一) 一. 内部类的定义和特点 class Outer{ privite int num = 5; class Inner{ public void Display(){ System.out.println(num); } } public void method(){ Inner i = new Inner(); i.Display(); } } 这里写了一个类Outer,它有一个私有变量,一个成员方法method(),和一个内部类Inner.在内部类Inner中访问

Java 匿名内部类 & 内部类

一.JAVA中内部类和匿名内部类的区别 内部类:内部类可以是static的或者非static的,static内部类只能包含静态方法和静态类变量,只能访问外部类的静态元素,内部类可以实例化,多次使用. 匿名内部类:它只能使用一次,不区分static和非static.如果用到外部类的变量的话,必须是类变量或者实例变量,就是必须是类定义的变量,或者final的局部变量.匿名内部类如果是继承某个类的话是可以重写那个类的方法的,这个和普通内部类一样.  总结:可以用匿名内部类的地方都可以用内部类替换,但是