博客
关于我
java之内部类
阅读量:240 次
发布时间:2019-03-01

本文共 1389 字,大约阅读时间需要 4 分钟。

1、什么是内部类?

内部类:在类的内部又定义了一个新的类,被称为内部类。

2、内部类的分类:

静态内部类:类似于静态变量
实例内部类:类似于实例变量
局部内部类:类似于局部变量
3、使用内部类编写的代码,可读性很差,能不用尽量不用。
4、匿名内部类是局部内部类的一种。
因为这个类没有名字而得名,叫做匿名内部类。
5、学习匿名内部类主要是让大家以后在阅读别人代码的时候,能够理解,并不代表以后都要这样写,因为匿名内部类有两个缺点:
缺点1:太复杂、太乱、可读性太差
缺点2:类没有名字,以后想重复使用,不能用

【代码】	package Test;	 	public class InnerClassTest {   		//该类在类的内部,所以称为内部类		//由于前面有static,所以称为“静态内部类”		static class Inner1{   		}		//该类在类的内部,所以称为内部类		//该类叫做实例内部类		class Inner2{   		}		public void doSome(){   			//该类在类的内部,所以称为内部类			//局部内部类			class Inner3{   			}		}		public void doOther(){   			//dosome()方法中的局部内部类Inner3,在doOther()中不能用		}		public static void main(String[] args) {   			MyMath mm = new MyMath();			//这样写表示这个类名是有的,类名是:ComputeImpl			/*			分开的写法:			Compute c = new ComputeImpl();			mm.mySum(c,10,20);			合并的写法:			mm.mySum(new ComputeImpl(),10,20);			 */			//使用匿名内部类,表示这个ComputeImpl这个类没名字了			//这里表面上看上去好像接口可以直接new了,实际上并不是接口可以new了			//后面的{}代表了对接口的实现			//不建议使用匿名内部类,为什么?			//因为一个类没有名字,没有办法重复使用,另外代码太乱,可读性太差			mm.mySum(new Compute() {   				@Override				public int sum(int a, int b) {   					return a+b;				}			},10,20);		}	}	interface Compute{   		int sum(int a,int b);	}	class ComputeImpl implements Compute{   		@Override		public int sum(int a, int b) {   			return a+b;		}	}	class MyMath{   		public void mySum(Compute c,int x,int y){   		   int retValue = c.sum(x,y);			System.out.println(x + "+" + y+ " = " + retValue);		}	}

转载地址:http://iljv.baihongyu.com/

你可能感兴趣的文章
mysql 的GROUP_CONCAT函数的使用(group_by 如何显示分组之前的数据)
查看>>
MySQL 的instr函数
查看>>
MySQL 的mysql_secure_installation安全脚本执行过程介绍
查看>>
MySQL 的Rename Table语句
查看>>
MySQL 的全局锁、表锁和行锁
查看>>
mysql 的存储引擎介绍
查看>>
MySQL 的存储引擎有哪些?为什么常用InnoDB?
查看>>
Mysql 知识回顾总结-索引
查看>>
Mysql 笔记
查看>>
MySQL 精选 60 道面试题(含答案)
查看>>
mysql 索引
查看>>
MySQL 索引失效的 15 种场景!
查看>>
MySQL 索引深入解析及优化策略
查看>>
MySQL 索引的面试题总结
查看>>
mysql 索引类型以及创建
查看>>
MySQL 索引连环问题,你能答对几个?
查看>>
Mysql 索引问题集锦
查看>>
Mysql 纵表转换为横表
查看>>
mysql 编译安装 window篇
查看>>
mysql 网络目录_联机目录数据库
查看>>