I学霸官方免费教程十二:Java基础之内部类
内部类
在一个类的内部或方法的内部声明的类,叫做内部类。
语法格式:[访问修饰符] [static] class 类名{}
可以简单的把内部类理解成一个变量,只不过这个变量的数据类型是class,使用时需要创建对象后再使用。
分类:
成员内部类:直接声明在类中的内部类(同成员变量)
局部内部类:生命在方法中的内部类(同局部变量)
静态内部类:使用static修饰的内部类(同静态变量)
匿名内部类:没有名字的内部类
匿名内部类的语法格式:new 类名/抽象类名/接口名(){ // 重写方法 }
实例: /** * 国家类:演示内部类的使用 * @author 学霸联盟 - 赵灿 */ class Country { // 声明一个公共的字符串类型的成员变量(属性)president(总统) public String president; // 声明一个公共的成员内部类City(城市) // 注意:这里不是方法,方法在名称后面要有小括号 public class City { // 声明一个公共的String类型的province(市长) public String province = "张三"; //非静态内部类中不能使用static声明成员 public void method(){ System.out.println("非静态内部类的非静态方法"); } } /* * 创建一个公共的没有返回值的方法promote(升职) * 因为变量province属于City类,所以要使用变量province, * 需要先创建City类的对象,然后用City类的对象才能调用province属性 */ public void promote() { // 创建Family对象f City city = new City(); // 将对象f的householder属性值赋值给president属性 // 执行后president的值也是“张三” president = city.province; //声明一个局部内部类,只能在该方法的内部使用,外部无法使用 class localInnerClass{ } } //静态内部类 public static class Province{ public static void staticMethod(){ System.out.println("静态内部类的静态方法"); } public void method(){ System.out.println("静态内部类的非静态方法"); } } } /** * 测试类:测试内部类的使用 * @author 学霸联盟 - 赵灿 */ public class InnerClassDemo{ public static void main(String[] args) { //直接调用静态内部类的静态方法 Country.Province.staticMethod(); //创建静态内部类的对象 Country.Province cp = new Country.Province(); //只能使用对象调用非静态方法 cp.method(); //创建非静态内部类的对象时,必须先创建外部类的对象 Country c = new Country(); //使用外部类的对象去创建内部类的对象 Country.City cc = c.new City(); //调用非静态内部类的非静态方法 cc.method(); } } 运行结果: 静态内部类的静态方法 静态内部类的非静态方法 非静态内部类的非静态方法
版权声明:本文为博主原创文章,未经博主允许不得转载。