我的第一篇CSDN博客之 java内部类—方法内部类
来源:互联网 发布:sharpdesk3.3扫描软件 编辑:程序博客网 时间:2024/05/20 07:36
我的第一篇CSDN博客之 java内部类—方法内部类
定义
顾名思义,内部类就是一个类在另一个类的内部。
作用
我认为主要作用有两条: 1. 内部类可以很好的实现隐藏,拥有外部类所有元素的访问权限。 2、可以独立的继承多个具体的或抽象类的能力,使多重继承解决方案变得更完整。
分类
java内部类分为:匿名内部类、方法内部类、成员内部类、静态嵌套类。
四种内部类的共性
1. 内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号。 2. 内部类被当做外部类的一个成员,因此内部类可以用final、static、private等修饰符修饰,内部类可以随意的访问外部类的成员变量,无论外部类是否是private的。 3. 当内部类声明成static时,就不能随便访问外部类的成员变量了,此时内部类只能访问外部类的静态成员变量了。
1、匿名内部类
匿名内部类也就是没有名字的内部类,正因为没有名字,故此类只能用一次,通常用作简化代码。满足下面的一些条件,使用匿名内部类是比较合适的:
- 只用到类的一个实例
- 类在定以后马上使用
- 类非常小(SUN推荐是在4行代码以下)
2、方法内部类
方法内部类就是把类放在另外一个类的方法中。
package com.zzu.edu;public class Person { public void Study() { final int i = 6; final class Child { public void speakForeign() { System.out.println(i + "门外语"); } } Child s = new Child(); s.speakForeign(); }; public static void main(String[] args) { Person p= new Person(); p.Study(); }}
运行结果:6门外语。
上面的例子表明我们只知道Person类实现了学习的功能,具体怎样实现的,我们并不知道的。所以可以使用方法中的内部类隐藏我们的信息。
注意
- 方法内部类只能在定义该内部类的方法内实例化,不可以在此方法外对其实例化。
- 方法内部类对象不能使用内部类所在方法的非final局部变量。因为方法的局部变量位于栈上,只存在于该方法的生命周期内。当一个方法结束后,其栈结构被删除,局部变量变为历史。但是该方法结束后,在方法内创建的内部类对象可能仍然存在于栈中!
阅读全文
0 0
- 我的第一篇CSDN博客之 java内部类—方法内部类
- 我的第一篇CSDN博客之 java内部类—匿名内部类
- java内部类之方法内部类
- 我的第一篇博客,献给黑马啦。(知识点:构造体,内部类访问权限)
- java内部类,内部类的共性,成员内部类,方法内部类匿名内部类,静态嵌套类,不解
- JAVA中的内部类--方法内部类
- java内部类之成员内部类、静态内部类
- java的内隐类之匿名内部类的成员匿名内部类和方法匿名内部类
- java内部类之匿名内部类
- Java内部类之成员内部类
- Java内部类之静态内部类
- Java内部类之匿名内部类
- java方法内部类
- Java:方法内部类
- Java的内部类之成员内部类
- JAVA之内部类--成员内部类- 静态内部类- 方法内部类- 匿名内部类
- java的内部类、匿名内部类、局部内部类
- 在我的上一篇博客 深入理解Java中为什么内部类可以访问外部类的成员
- typedef和#define的用法与区别
- #6177. 「美团 CodeM 初赛 Round B」送外卖2
- CURL 请求数据
- 啦啦啦
- 手动创建控制文件
- 我的第一篇CSDN博客之 java内部类—方法内部类
- Android Studio中Git的配置及协同开发
- windows远程链接虚拟机ubuntu下MySQL数据库
- [LeetCode] 237. Delete Node in a Linked List
- Fibre Channel光纤通道系统基础(一)
- 快捷键
- 【openjudge】最大上升子序列和
- java-循环语句
- levenshtein字符串编辑距离算法