内部类

#内部类
内部类定义:

包含在外部类中的类,一种静态内部类、一种非静态内部类。

		//外部类
		public class OuterClass {
		    //非静态内部类
		    class InnerClass{
		
		    }
		    //静态内部类
		    static class StaticInnerClass{
		
		    }
		}

静态和非静态内部类的区别:

静态内部类:是外部类的静态成员,属于外部类。

非静态内部类:并不属于外部类,是属于外部类实例对象的一个实例成员。也就是说非静态内部类实例与它的外部类实例有寄存关系。有内部类实例一定有外部类实例反之不成立。

创建方式的区别

创建内部类实例:“外部类.内部类()”,比如 new OuterClass.InnerClass()。

创建内部类实例:“外部类().内部类()”必须先创建一个外部类实例,再创建内部类实例,比如 new OuterClass().InnerClass()。

为了方便,一般使用静态内部类。

匿名内部类

		public interface ISayHello {
		    String sayHello(String name);
		}
		
		public class SayHelloTest {  
		    public static void main(String[] args) {
		       ISayHello obj = new ISayHello() {
		       public String sayHello(String name) {
				 return "hello, " + name }
		    }
		    System.out.println(obj.sayHello("leo"))
		  }
		}

匿名内部类的使用场景:**在一个内部类,只需要创建一次,使用一次,以后就不再使用。那么,此时,通常不会选择在外部创建一个类,而是选择直接创建一个实现了某个接口、或者继承了某个父类的内部类,而且通常是在方法内部,创建一个匿名内部类。

在使用java进行spark编程的时候,如果使用的是java7以及之前的版本,那么通常在对某个RDD执行算子,并传入算子的函数的时候,通常都会传入一个实现了某个Spark Java API中Function接口的匿名内部类。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值