java 第3集 内部类

一、内部类定义

将一个类的定义放在另一个类的内部,这叫做内部类。

package i;
//Foo是一个外部类
public class Foo {
	private int v1;	
		public Foo(int v1) {//外部类构造器(非默认构造器)
		super();
		this.v1 = v1;
	}
	public void fooF(){
		//创建内部类的对象,编译器会将this传递给Bar的构造器
		//这样内部类的对象就持有外部类对象的引用
		Bar bar =new Bar();//内部类的对象
		bar.barF();
	}
//Bar是一个内部类
	public class Bar{//构造器没有另外写,为默认构造器
		public void barF(){
			//内部类的对象有一个对外部类的对象的引用outer,因此可以访问外部类的数据
			//outer无视访问修饰符,outer不是java关键字
			System.out.println(v1);//实际为System.out.println(outer.v1);,系统自动加
			//内部类访问外部类的属性v1
		}	
	}
	public static void main(String[] args) {
		Foo foo=new Foo(10);//创建外部类的对象,并把参数传给构造器
		//public Foo(int v1),外部属性v1=10
		foo.fooF();
		//创建内部类对象,必须先有外部类的对象
		//使用foo.new Bar(),编译器会将foo参数传递给Bar的构造器
		Bar bar=foo.new Bar();
		bar.barF();
		
		//bar 和bar2持有同一个外部类对象的引用
		Foo.Bar bar2=foo.new Bar();//即Foo.Bar与bar同作用
		bar2.barF();
	}
}

二、局部内部类

在方法中声明的内部类
作用:局部内部类可以使内部类无法被外部察觉。
在这里插入图片描述
三、静态内部类
有时候使用内部类只是为了把一个类隐藏在另一个类的内部,并不需要内部类引用外部类的对象,这种情况可以使用静态内部类。
在这里插入图片描述
调用静态内部类
在这里插入图片描述
匿名内部类
在这里插入图片描述
如果这个对象只需要一个,那么创建一个类去实现接口就太麻烦了。
使用匿名内部类可以解决这个问题。
在这里插入图片描述
java单例模式学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值