Java里面的四大内部类
来源:互联网 发布:ubuntu kylin qq 编辑:程序博客网 时间:2024/05/22 13:38
Java里面有种类叫做内部类。在Java里面有四种内部类分别是匿名内部类,静态内部类,成员内部类,局部内部类。今天就来说说这几个内部类。
(1)匿名内部类:说白了就是把接口的实现写在方法的调用里面,而这个匿名的类就是接口的实现,而不是单独写出来。
这段代码,是把接口的实现单独写出来,没有用到匿名内部类:
public class Test {//静态方法public static void test(CustomerServcie cs){cs.logout();}//入口public static void main(String[] args) {test(new CustomerServiceImpl());}}//接口interface CustomerServcie{void logout();}//编写一个类去继承去实现这个接口class CustomerServiceImpl implements CustomerServcie{public void logout(){System.out.println("系统已经安全退出了!!!");}}这段代码是使用了匿名内部类的:
public class Test02 {//静态方法public static void test(CustomerServcies cs){cs.logout();}//入口public static void main(String[] args) {//test(new CustomerServicesImpl());//使用匿名内部类的方式执行test方法//整个这个”new CustomerServcies(){}“就是一匿名个内部类test(new CustomerServcies() {public void logout() {System.out.println("系统已经安全退出了!!!");}});}}//接口interface CustomerServcies{void logout();}匿名内部类的优缺点:
优点:少定义一个类
缺点:缺点:不能重复使用
(2)成员内部类:成员内部类可以等同的看作成员变量
代码如下:
public class OutClass {//静态变量private static String s1 = "A";//成员变量private String s2 = "B";//静态方法private static void m1(){System.out.println("static'm1 method execute");}//成员方法private void m2(){System.out.println("m2 method execute");}//静态内部类//可以用访问权限的修饰符来修饰static class InnerClass{//定义静态方法public static void m3(){System.out.println(s1);m1();//System.out.println(s2);//m2();不允许的}public void m4(){System.out.println(s1);m1();//System.out.println(s2);//m2();}}public static void main(String[] args) {OutClass.InnerClass.m3();//想让m4执行InnerClass inner = new OutClass.InnerClass();inner.m4();}}成员内部类的作用:可以访问外部类中私有的数据。
(3)静态内部类:<1>.成员内部类可以等同的看做成员变量。<2>.成员内部类中不能有静态方法。<3>成员可以访问外部类中所有的数据
代码如下:
public class OuterClass {//静态变量private static String s1 = "A";//成员变量private String s2 = "B";//静态方法private static void m1(){System.out.println("static'm1 method execute");}//成员方法private void m2(){System.out.println("m2 method execute");}//成员内部类//可以用访问权限的修饰符来修饰class InnerClass{//成员内部类中不能定义静态方法//public static void m3(){//System.out.println(s1);//m1();//////System.out.println(s2);////m2();不允许的//}public void m4(){System.out.println(s1);m1();System.out.println(s2);m2();}}public static void main(String[] args) {//创建外部类的对象OuterClass out = new OuterClass();InnerClass inner = out.new InnerClass();inner.m4();//可以跑}}静态内部类可以直接访问外部类的静态数据,无法直接访问成员。
局部内部类:<1>局部内部类等同于局部变量。<2>局部内部类在访问局部变量的时候,局部变量必须使用final修饰
public class OuterClass {public void m1(){//局部变量final int i = 10; //局部内部类//局部内部类不能用访问控制权限修饰符修饰//该类只在m1()方法里面有效class InnerClass{//内部类中不能有静态声明//public static void m(){////}//成员方法public void m2(){System.out.println(i);}}//调用m2()方法InnerClass inner = new InnerClass();inner.m2();}//入口public static void main(String[] args) {OuterClass out = new OuterClass();out.m1();}}
1 0
- Java里面的四大内部类
- java内部类的四大作用
- 四大 Java 内部类总结
- 关于JAVA里面的内部类的一些理解
- java里面如何创建一个内部类的实例?
- 一个JAVA文件里面类的数量以及内部类
- java内部类里面使用static
- 四大内部类
- 四大内部类
- java的内部类、匿名内部类、局部内部类
- 作用域里面的内部类
- java的内部类
- Java的内部类
- java的内部类
- Java的内部类
- java的内部类
- java的内部类
- JAVA的内部类
- Active MQ的使用
- Oracle 数据库基于SCOTT模式的分组技术和子查询
- 《算法竞赛入门经典》习题2-5 分数化小数(Decimal)
- 最高的奖励
- iOS 多线程之延迟操作
- Java里面的四大内部类
- SQL语句中常用关键词及其解释
- Android中第三方SDK集成之百度地图集成(入门篇)
- Mysql分区的使用
- 快速排序
- Qt登录对话框
- Mac下启动tomcat
- SPOJ SUBSUMS Subset Sums 折半枚举
- 学习SSH 增删改查