内部类_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 内部类

内部类

 2013/10/21 18:11:43  lylan  程序员俱乐部  我要评论(0)
  • 摘要:所谓内部类,就是在一个类中声明的类称为内部类。1.为什么要有内部类呢?内部类可以访问外部类中的私有实例变量。当内部类的访问修饰符声明为private时,内部类只能在外部类内部使用,使用外部类时不知道内部类的存在。2.什么是内部类呢?publicclassOuter{publicvoidrun(){System.out.println("Hello,I'mintheOuter!!!");}publicclassInner{publicvoidrun(){System.out.println
  • 标签:

所谓内部类,就是在一个类中声明的类称为内部类。

1.为什么要有内部类呢?

  • 内部类可以访问外部类中的私有实例变量
  • 当内部类的访问修饰符声明为private时,内部类只能在外部类内部使用,使用外部类时不知道内部类的存在。

2.什么是内部类呢?

class="java" name="code">public class Outer {
	public void run(){
		System.out.println("Hello,I'm in the Outer!!!");
	}
	public class Inner{
		public void run(){
			System.out.println("Hello,I'm in the Inner...");
		}
	}
}

?3.如何调用内部类的实例对象呢?

内部类的实例化有两种方法:

Outer.Inner inner = new Outer().new Inner();
inner.run();

?

Outer outer = new Outer();
Inner inner = outer.new Inner();
inner.run();   //调用内部类的方法
outer.run();  //调用外部类的方法

?4.内部类可以调用外部类的实例变量

?

?

public class Outer {
	private String name = "tom";
	public class Inner{
		public void run(){
			System.out.println("Inner..."+name);
		}
	}	
}

name只有一个属性值,输出的结果就是:Inner...tom

?

如果在内部类的内部也声明了一个name属性的话,那么它就会根据就近原则,选择离它最近的name值,如果是这样的话,怎么调用外部类的属性值呢?

public class Outer {
	private String name = "tom"
	public class Inner{
		private String name = "jerry";
		public void run(){
			System.out.println("Hello, Inner..."+ Outer.this.name);
			System.out.println("Hello, Inner..."+this.name);
		}
	}	
}

?输出结果:Hello,Inner...tom ? ? ? ? ?

? ?Hello,Inner...jerry

5.在外部类内部创建内部类对象

在外部类创建内部类对象,直接创建就可以了

?

public class Outer {
	public void hi(){
		Inner in = new Inner();
		in.run();
	}
	public class Inner{
		public void run(){
			……
		}
	}	
}

?6.静态内部类

?静态内部类就是用static修饰的内部类

public static class Inner{ ?

? ? ? ?……

}

在创建时,用外部类直接调用来创建:Outer.Inner inner = new Outer.Inner();

静态内部类的方法可以调用外部类的静态属性:

public class Outer {
	private static String name = "jack";
	public static class Inner{
		private static String name = "merry";
		public void sayHi(){
			System.out.println("Hello "+Outer.name);
			System.out.println("Hello "+ name);
		}
	}	
}

?输出结果:Hello jack

? ?Hello merry

7.局部内部类

局部内部类创建在一个方法中,作用范围在这个方法中

public class Outer{
        public void hi(){
		class Inner{
			public void sayHello(){
				System.out.println("Hello");
			}
		}
		Inner inner = new Inner();
		inner.sayHello();	
		
	}
}

?为什么采用局部内部类?

  • 解决一个复杂的问题,想创建一个类来辅助你的解决方案,但是又不希望这个类是公共可用的
  • 在方法内部实现一个接口,并返回对其的引用
局部内部类使用方法中定义的变量,变量必须声明为final 8.匿名局部内部类 匿名局部内部类就是没有名字的内部类
public interface Usb {
	public void run();
}

        public Usb getUsb(){
		return new Usb() {
			@Override
			public void run() {
				System.out.println("USB RUN...");
			}
		};
	}
上一篇: MySQL增加Sequence管理功能 下一篇: 没有下一篇了!
  • 相关文章
发表评论
用户名: 匿名