Java内部类和匿名内部类

一,内部类:类内部的类就是内部类,就是把一个类定义在另一个类中,那么内部的类就是内部类,内部类不能直接创建,创建方式为外部类.内部类 变量名 = new 外部类对象.new 内部类对象

内部类的特点:
1,本类可以直接创建内部类对象
2,内部类对象可以访问外部类的属性和方法

package interior;

public class TestInner {
	
	public static void main(String[] args) {
		//创建内部类对象
		Outter.Inner inner = new Outter().new Inner();
		inner.setInNum(13);
		inner.inMethod();
		System.out.println(inner.getInNum());
		
		System.out.println("*********************");
		
		new Outter().outMethod();
	}

}

/**
 * 外部类
 */
class Outter{
	private int outNum;
	
	public void outMethod() {
		System.out.println("外部类的方法");
		//外部类调用内部类的属性和方法
		Inner i = new Inner();
		i.setInNum(1);
		System.out.println(i.getInNum());
		i.inMethod();
	}
	
	
	public int getOutNum() {
		return outNum;
	}


	public void setOutNum(int outNum) {
		this.outNum = outNum;
	}
	

	/**
	 * 内部类
	 */
	class Inner{
		private int inNum;
		
		public void inMethod() {
			System.out.println("内部类的方法");
			System.out.println(outNum);
		}

		public int getInNum() {
			return inNum;
		}

		public void setInNum(int inNum) {
			this.inNum = inNum;
		}
		
	}
}

二,匿名类:没有名字的类,这种类需要在接口或者抽象类上实现,匿名类和匿名内部类都需要接口或抽象类的支持

package interior;

public class Anonymous {
	
	public static void main(String[] args) {
		//创建的不是接口本身, new myInter()大括号就是一个匿名类,此处因为在Anonymous内部所以是匿名内部类
		myInter mi = new myInter() {			
			@Override
			public void interMethod() {
				System.out.println("匿名内部类的方法");				
			}
		};
		
		mi.interMethod();
		
		//匿名内部类是一次性的,通常不引用时我们可以这样调用
		new myInter() {			
			@Override
			public void interMethod() {
				System.out.println("这还是匿名内部类的方法");				
			}
		}.interMethod();
		
	}

}

/**
 * 定义一个接口
 */
interface myInter {
	public void interMethod();
}

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值