java面向对象之内部类的学习

将一个类的定义放在另一个类的定义内部,这就成为是内部类
内部类分为非静态内部类、静态内部类、局部内部类和匿名内部类。

1、创建非静态内部类

/*
 *测试非静态内部类
 * */
public class TestInnerclass {
	public static void main(String[] args) {
		//创建内部类对象
		Outer.Inner inner=new Outer().new Inner();
		inner.show();
		 
	}
}
class Outer{
	public int age=10;

	class Inner{
		int age=20;
		public void show() {
			System.out.println("外部类的成员变量age:"+Outer.this.age);
		}
	}
}

注意在创建内部类对象时,一定要有对应的外部类,Outer.Inner inner=new Outer().new Inner();
在这里插入图片描述

2、创建静态内部类

/*
 * 测试静态内部类
 * 静态内部类.名字
 * */
public class TeststaticInner {
    public static void main(String[] args) {
		Outer1.Inner inner=new Outer1.Inner();
		//静态类的实例化方法不能直接访问外部类的实例方法
		inner.show();
	}
}
class Outer1{
	//相当于外部类的一个静态成员
	static class Inner{
		int age=10;
		public void show() {
			System.out.println("静态内部类的成员变量age:"+this.age);
		}
	}
}

在这里插入图片描述

3、局部内部类使用不多

局部内部类是定义在方法里面的内部类,仅在该方法内有效。

4、创建匿名内部类

//匿名内部类
public class TestAnonymousInnerClass {
   public static void test01(AA a) {
	   System.out.println("--------");
	   a.aa();
   }
   public static void main(String[] args) {
	TestAnonymousInnerClass.test01(new AA() {
		@Override
		public void aa() {
			// TODO Auto-generated method stub
			System.out.println("TestAnonymousInnerClass.test01(new AA()");
		}
	});
		
	}
	   
}  
interface AA{
	void aa();
}

匿名内部类适合只需使用一次的类。比如键盘监听操作等。
它没有访问修饰符,也没有构造方法。

语法形式

new 父类构造器(实参数表)\实现接口(){
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值