免费的网站生成app,国际军事新闻在哪看,遵义公共资源交易中心电话,建设银行手机登陆网站嵌套类是指被定义在另一个类内部的类#xff0c;它为外部类提供服务。嵌套类分四种#xff1a;静态成员类、非静态成员类、匿名类和局部类。一、静态成员类与非静态成员类的区别#xff1f;在什么情况下可以用静态成员类#xff1f;我们知道在类的设计中#xff0c;为了避…嵌套类是指被定义在另一个类内部的类它为外部类提供服务。嵌套类分四种静态成员类、非静态成员类、匿名类和局部类。一、静态成员类与非静态成员类的区别在什么情况下可以用静态成员类我们知道在类的设计中为了避免继承破坏封装性组合优于继承。通过使用成员类来实现组合设计需要足够了解它们的特性以及在何时使用。从表面上看静态成员类只是比非静态的成员类在声明上多出了修饰符static。尽管它们功能相似但与实际上非静态成员类的每个实例都隐含关联着一个外部类的实例。也就是说非静态成员类不可能独立于它的外部类实例之外而独立存在。公有静态成员类可作为辅助类如Compass类中的枚举DirView Code1 package com.mnid.innerclass;23 public class Compass {4 private Dir direction Dir.SOUTH;56 public static enum Dir {7 EAST, SOUTH, WEST, NORTH;8 }910 public Dir directing() {11 //Bulk of class omitted12 return direction;13 }14 }使用私有的静态成员类常见方法是用来代表外围类所代表的对象的组件如一个Map实例它的内部都有一个Entry对象对应Map中的所有键-值对但Entry本身不需要访问Map因此可以使用私有静态成员类设计。非静态成员类实例都额外的对外部类实例的引用会引起不必要的开销。如果成员类不需要访问外部类实例就应该将其声明为static的。二、匿名类的限制和使用以及局部类匿名类在声明的同时就进行实例化。它不是外部类的成员并且只有在非静态环境中才有外围实例引用。匿名类的常见用法是动态创建函数对象View Code1 public String fetchShortest(String[] strArray) {23 Arrays.sort(strArray, new Comparator() {45 Override6 public int compare(String s1, String s2) {7 return s1.length() - s2.length();8 }9 });10 return strArray[0];11 }其他常见用法包括创建过程对象如Runable、Thread在静态工厂方法内部也经常用到。局部类可以在任何声明局部变量的地方声明其特性与其他三种嵌套类一样。声明匿名类和局部类时需非常简短以免影响可读性。