面向对象编程java——内部类

面向对象编程java——内部类

类竟然可以嵌套!内部类也是类的一种,都是面向对象语言实现封装的基础。Java中可以定义在一个类内部或是一个方法体内部的类叫做内部类,方便对外部类直接进行访问。照目前的分类来说可分为成员内部类、局部内部类、静态内部类和匿名内部类。下面就来介绍一下这四种类的用法:
一、成员内部类
概念:定义在一个类内部的类,叫做成员内部类。可以使用不同的权限修饰符(public、protected、默认不写、private)也可以加final(最终) 和abstract(抽象)。形式如下:
成员内部类
成员内部类需要通过外部类实例来创建内部类的对象。,内部类需要通过外部类实例来实现内部类调用。方便更好的保护了对象的权限,同类中private也可在内部类中使用
内部类调用
二、局部内部类。
Java中局部内部类是定义在方法中或是在作用域中的类。它和成员内部类不同的是它只能在方法体内或者作用域内使用。
局部内部类
这里需要注意:局部内部类仅为方法提供,就像方法中的局部变量一样。是不能加访问修饰符的。
三、静态内部类
静态内部类就是在成员内部类的前方修饰符中加上static静态修饰符。静态内部类是不需要依赖外部类的。可以直接通过外部类的类名直接创建,不再需要外部类实例创建内部类的对象。
静态内部类
注:这里静态内部类只能创建只能在顶级类型中创建。就是它创建出来只有一个,属于外部类,但不依赖于外部类。
四、匿名内部类
匿名内部类应该是我们平时最常用的一种了,方便使用和容易维护。其使用范围很广,换一句话来说匿名内部类的存在就像是一种继承关系一样,其中就和子类一样,可实现父类方法或者重写父类的方法,并不需要加入其他方法。还有匿名内部类就和匿名对象一样,不用创建对象,可直接调用。
一般格式:类 () 对象名 = new 类名(){匿名内部类重写,继承父类或者实现接口的方法};
匿名内部类
匿名内部类是唯一一个没有构造器的类。所以匿名内部类的使用范围非常有限,大部分匿名内部类用于接口回调。匿名内部类在编译的时候由系统自动起名为Outter$1.class(意为内部类)。知识有限,这里也不多做解释。
这块还有一个注意的点:jdk7及以前的版本,内部类访问外部类变量时,该变量必须被final(最终)修饰词修饰,不然无法进行访问,djk8以后,可以不加final修饰符,但是默认加着,也就是说系统加着。
欢迎指教!!!

发布了11 篇原创文章 · 获赞 8 · 访问量 1592

猜你喜欢

转载自blog.csdn.net/weixin_44627238/article/details/87379933