Java---------【java中的内部类的使用】

            作为一个初级程序猿,如果你想要跟上大流的脚步,你只有不断的自我学习,自我提升。但是心里总会有另一个声音在骚扰你,你那么努力为了什么?到头来还不是混的一塌糊涂,还不如人家,天天活的逍遥自在,最后同样比你混的好!这时候我会很没有自信的说一句我在做一件有益人类未来发展的事情,我在做自己喜欢做的事情!说完后心里默默的骂自己一句,扯淡,鬼才相信你说的话。好了既然是扯淡,那今天就不说了,我们开始我们的正题,今天我同大家一起学习java中的内部类。

             在初学java的时候只是对内部类有一点印象,感觉非常高深的东西,不是我等菜鸟级别可以理解的,所以从来没有勇气去认真的去学习他。如今的我着实对java有浓厚的感情,所以下意识的想去解决掉自己每一个不懂或者不明白的地方,下面我就分享下我自己的一点关于内部类的理解:

概念:其实就是在类中定义一个类,用的比较少,所以感觉比较陌生。实际就是两个事物,你中有我,我中有你,有扯不清的关系,我们可以用内部类来描述,下面先展示一个实例。

public class out {

	int num = 4;

	class in {
		int num = 3;

		public void showou() {
			int num = 5;
			System.out.println(num);// print 5
			System.out.println(this.num);// print 3
			System.out.println(in.this.num);// print 3
			System.out.println(out.this.num);// print4
		}
	}
	public void showin() {
		in BLF = new in();
		BLF.showou();
	}

}
在使用内部类的时候需要注意几点:
     1.内部类可以直接使用外部类的成员。

     2.外部类使用内部类的成员时,必须通过对象调用。

匿名内部类的使用:他其实是内部类的一种简写方式,就是他没有名字,在使用它一定要有一个前提,那就是必须实现一个接口或者继承一个外部类,下面是具体的实现。

(展示代码):

public interface Interface1 {//定义一个接口
	 void demo();
	 void demo2();
}

public class Out2 {
int num = 3;  
  
  public void set()  
  {  
      Interface1 it1=new Interface1() //在这里我们只是给父类的一个对象的一个名字。你可以直接用new Interfave1()来代替这行内容
      {  
          void show()  
          {  
              System.out.println(num);  
          }  
          void  haha()  
          {  
                
          }
		@Override
		public void demo() {
			// TODO Auto-generated method stub
			System.out.println("Hello,I`m david!");
		}
		@Override
		public void demo2() {
			// TODO Auto-generated method stub
			System.out.println("Hello I`m CAT!!");
		}  
      };//对象.show()  
        //因为我们再头部使用了父类的一个对象,就是对象升级,上升到父类对象,所以在使用时只可以使用父类中有的方法。这里是多态的一个充分的体现。
        it1.demo();
        it1.demo2();
        
  }  
			

}

上面是匿名内部类的一个展示,其实有时候我们再使用匿名内部类时,我们可以按照参数的形式去传递,下面给大家展示下:

package testPkg6;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub	
		Out2 BLF=new Out2();
		BLF.set();
		show(new Interface1()  
        {     
			public void demo2() {
				// TODO Auto-generated method stub
				System.out.println("=====hello=====");
			}
			@Override
			public void demo() {
				// TODO Auto-generated method stub
				System.out.println("=====hello2======");
			}  
        });  
		
		
	}
	public static void show(Interface1 a){
		a.demo();
		a.demo2();
	}

}

以上为内部类的一点学习心得,希望可以与大家分享交流,有问题的可以直接留言.



                                                                                                      每日励志:Live each day as if it is your last.

                                                                                    (要活就要像明天你就会死去一样活着)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值