java——内部类

内部类

一、定义:把一个类定义在另一个类中,对里面的那个类就称为内部类(内置类、嵌套类)。

二、特点:

  1. 内部类可以直接访问外部类中的成员,包括私有的成员;外部类访问内部类中的成员必须建立内部类的对象;
  2. 静态内部类只能访问外部类的静态变量;
  3. 接口里可以定义内部接口和抽象类,抽象类里可以定义接口和抽象类。

三、 代码;

class JavaDemo
{
	public static void main(String[] args) 
	{
		//System.out.println(new Outer().getInner());
		//new Outer().getInner().test();
		Outer out = new Outer();
		Outer.Inner in = out.new Inner();//先要创建外部实例
		in.test();

		new Outer.Heart().test();

	}
}
//内部类

class Outer
{
	private static String outInfo = "好人";

	public void test(){
		System.out.println("outer_test");
	}

	class Inner
	{
		public void test(){
			System.out.println("Inner"+outInfo);
		}
	}
	//静态内部类只能访问外部的静态变量
	static class Heart
	{
		public void test(){
			System.out.println("Heart"+outInfo);
			}
	}
	/*
	public Inner getInner(){
		return  new Inner();
	}
	*/
	
}

四、局部内部类:将内部类写在方法中,这种情况,如果内部类想要访问方法中的参数,那么参数必须是final定义的(jdk1.8就可以不写final)

Eg:

//定义外部类:
class Outer{
      private String info = "hello world!!";
      public void fun(final int temp){
           //在方法中定义内部类:
           class Inner{
               public void print(){
                    System.out.println("类中的属性:"+info);
                    System.out.println("方法中的参数:"+temp);
         }
      };
       new Inner().print();
   }
}


五、匿名内部类:

  1. 前提:内部类可以继承或者实现一个外部类或接口。
  2. 格式:new 外部类名/接口名(){覆盖类或接口中的代码/自定义内容}

Eg:

class NoNameDemo 
{
	public static void main(String[] args) 
	{
		Do d = new Do();
		//d.print(new B());
		d.print(
	new A(){public void test(){
	System.out.println("haha");
	}});
	}
}
interface A
{
	void test();
}
/*
class B implements A
{
	public void test(){
		System.out.println("hahah");
	}
}
*/
class Do
{
	public void print(A a){
		a.test();
	}

}


六、

  1. 实例内部类:new Outer.new Inner();
  2. 内部类的表示方法:Outer.Inner
  3. 静态内部类:new Outer.Inner().test();  //只能访问外部的静态变量

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值