JAVA中的四个内部类-成员内部类,静态内部类,方法内部类,匿名内部类
来源:互联网 发布:cms系统怎么用 编辑:程序博客网 时间:2024/04/18 18:36
总结下,JAVA类中的四个内部类
一.成员内部类
1.Inner类定义在Outer类的内部,类似于Outer类的一个成员变量,Inner类可以有任意访问控制符(public ,protected, private)。
2.Inner类中的方法可以直接使用Outer类中成员和方法(包括私有),但Outer类是不能直接使用Inner类中成员和方法。
3.声明Inner类的对象必须先声明Outer类的对象: Outer ot = new Outer(); Inner inr = ot.new Inner();
4.Outer类与Inner类有同名的成员或方法,内部类默认返回自己的成员和方法,如使用外部类成员或方法时,需使用this: Outer.this.成员或方法名。
// OuterClass1为外部类public class OuterClass1 {private int count = 10;private int num = 30;private void printString() {System.out.println("外部类");}private void printStr() {System.out.println("外部类2");}// InnerClass1为成员内部类public class InnerClass1 {private int count = 20;private void printString() {// 默认使用内部类的同名成员变量System.out.println("成员内部类中count值:" + count);// 使用外部类同名成员变量System.out.println("外部类中count值:" + OuterClass1.this.count);// 直接使用外部类成员变量System.out.println("外部类中num值:" + num);// 直接使用外部类方法printStr();// 使用外部类同名方法printString()OuterClass1.this.printString();}}public static void main(String[] args) {OuterClass1 otc1 = new OuterClass1();InnerClass1 ic1 = otc1.new InnerClass1();ic1.printString();}}输出结果:
成员内部类中count值:20
外部类中count值:10
外部类中num值:30
外部类2
外部类
二.静态内部类
1.静态内部类不能直接访问外部类的非静态成员
2.外部类静态成员与内部类静态成员重名时,可通过外部类名.静态成员访问
3.创建内部类实例:内部类 对象名 = new 内部类();
public class OuterClass2{ public static int num = 10; public int account = 100; public static class InnerClass2{ public static int num = 20; public void print(){ System.out.println("外部类静态成员num: " + OuterClass2.num); System.out.println("内部类静态成员num: " + num); System.out.println("外部类非静态成员account: " + new OuterClass2().account); } } public static void main(String[] args){ InnerClass2 inc2 = new InnerClass2(); inc2.print(); }}输出结果:
外部类静态成员num: 10
内部类静态成员num: 20
外部类非静态成员account: 100
三.方法内部类
1.方法内部类就是定义在外部类的方法中,方法内部类只在该方法中可见(只能在该方法中使用)
2.方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和static修饰符
public class OuterClass3{ int a = 40; public void show(){ final int b = 50; int e = 60; class InnerClass3{ int c = 30; public void print(){ System.out.println("外部类成员变量a: " + a); //方法内部类,无法访问方法中的局部变量e System.out.println("外部类的方法中的常量b: " + b); System.out.println("内部类成员变量c: " + c); } } InnerClass3 inc = new InnerClass3(); inc.print(); } public static void main(String[] args){ OuterClass3 otc = new OuterClass3(); otc.show(); }
方法内部类只能使用外部方法final常量:拷贝引用,为了避免引用值发生改变,例如被外部类的方法修改等,而导致内部类得到的值不一致,于是用final来让该引用不可改变。
四.匿名内部类1.使用匿名内部类时,必须是继承一个类或者实现一个接口
2.匿名内部类中是不能定义构造函数的
3.匿名内部类中不能存在任何的静态成员变量和静态方法
4.匿名内部类为局部内部类,所以局部内部类的所有限制同样对匿名内部类生效
5.匿名内部类不能是抽象的,必须要实现继承的类或实现的接口中所有抽象方法
new 父类构造器(参数列表)| 实现接口(){ //匿名内部类的类体部分 }
public class SortValueMap {public static void main(String[] args) {Map<String, Double> map = new HashMap<String, Double>();map.put("包", 280.0);map.put("手表", 1000.0);map.put("计算机", 10000.0);System.out.println("原始map: ");List<Map.Entry<String, Double>> list = new ArrayList<Map.Entry<String, Double>>(map.entrySet());for(Iterator<Map.Entry<String, Double>> ite = list.iterator(); ite.hasNext(); ){Map.Entry<String, Double> mery = ite.next();System.out.println(mery.getKey() + " -> " + mery.getValue());}// 匿名内部类,实现了Comparator接口Collections.sort(list, new Comparator<Map.Entry<String, Double>>(){@Overridepublic int compare(Entry<String, Double> o1,Entry<String, Double> o2) {// TODO Auto-generated method stubreturn o1.getValue().compareTo(o2.getValue());}});System.out.println("sort value map: ");for(Iterator<Map.Entry<String, Double>> ite = list.iterator(); ite.hasNext(); ){Map.Entry<String, Double> mery = ite.next();System.out.println(mery.getKey() + " -> " + mery.getValue());}}}
0 0
- JAVA中的四个内部类-成员内部类,静态内部类,方法内部类,匿名内部类
- JAVA之内部类--成员内部类- 静态内部类- 方法内部类- 匿名内部类
- Java 内部类(成员内部类、局部内部类、静态内部类和匿名内部类)
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、局部内部类、静态内部类、匿名内部类)
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Lesson_for_java_day18--java中的内部类(成员内部类、局部内部类,静态内部类,匿名内部类)
- Java中的内部类:成员内部类、静态内部类、方法内部类
- java内部类,内部类的共性,成员内部类,方法内部类匿名内部类,静态嵌套类,不解
- 内部类 静态内部类 成员内部类 局部内部类 匿名内部类
- 内部类(静态内部类 成员内部类 局部内部类 匿名内部类)
- 内部类---(静态内部类、成员内部类、匿名内部类、局部内部类)
- 内部类:成员内部类,局部内部类,静态内部类,匿名内部类
- java四种内部类(静态内部类,成员内部类,方法内部类,匿名内部类)详解
- Java静态内部类、匿名内部类、成员式内部类和局部内部类
- total control使用方法
- 扫描工具
- Hadoop 在 windows 7 64位的配置(二)|非cygwin
- 2014-11-8Android学习------onLayout()方法和Layout()方法--------动画Animation学习篇
- define与typedef区别与联系
- JAVA中的四个内部类-成员内部类,静态内部类,方法内部类,匿名内部类
- Uva 11584 - Partitioning by Palindromes dp
- makefile 文件样例
- 三星S24A350型显示器黑屏解决方法
- 联想五道笔试题 答案
- PDA(Windows Mobile)调用远程WebService
- 关于Server Tomcat v8.0 Server at localhost failed to start的解决办法
- 重新开始
- 蒋介石的故乡-浙江奉化溪口