zoukankan      html  css  js  c++  java
  • 内部类

    1、什么是内部类?

    一个类中还存在另外一个类,则成为内部类。

    class Outer{		// 定义外部类
    	private String info = "hello world" ;	// 定义外部类的私有属性
    	class Inner{	// 定义内部类
    		public void print(){				// 定义内部类的方法
    			System.out.println(info) ;		// 直接访问外部类的私有属性
    		}
    	};
    	public void fun(){						// 定义外部类的方法
    		new Inner().print() ;				// 通过内部类的实例化对象调用方法
    	}
    };
    public class InnerClassDemo01{
    	public static void main(String args[]){
    		new Outer().fun() ;					// 调用外部类的fun()方法
    	}
    };

    使用内部类的优点:可以方便的访问外部类中的私有属性。

    2、使用static声明内部类

    如果一个内部类使用static声明,则此内部类就成为外部类,可以直接通过外部类.内部类进行访问。
    class Outer{		// 定义外部类
    	private static String info = "hello world" ;	// 定义外部类的私有属性
    	static class Inner{	// 使用static定义内部类为外部类
    		public void print(){				// 定义内部类的方法
    			System.out.println(info) ;		// 直接访问外部类的私有属性
    		}
    	};
    	public void fun(){						// 定义外部类的方法
    		new Inner().print() ;				// 通过内部类的实例化对象调用方法
    	}
    };
    public class InnerClassDemo03{
    	public static void main(String args[]){
    		new Outer.Inner().print() ;					// 调用外部类的fun()方法
    	}
    };

    使用static关键字声明的内部类,就称为了外部类,可以直接在类的外部调用。但是,要访问外部类中的属性,则必须是static访问权限。

    3、在其他类中访问内部类

    一个内部类除了可以通过外部类访问,还可以在其他类中调用。其格式为:
    外部类.内部类  内部类对象 =  外部类实例 .new 内部类();
    class Outer{		// 定义外部类
    	private String info = "hello world" ;	// 定义外部类的私有属性
    	class Inner{	// 定义内部类
    		public void print(){				// 定义内部类的方法
    			System.out.println(info) ;		// 直接访问外部类的私有属性
    		}
    	};
    	public void fun(){						// 定义外部类的方法
    		new Inner().print() ;				// 通过内部类的实例化对象调用方法
    	}
    };
    public class InnerClassDemo04{
    	public static void main(String args[]){
    		Outer out = new Outer()	;			// 外部类实例化对象
    		Outer.Inner in = out.new Inner() ;	// 实例化内部类对象
    		in.print() ;						// 调用内部类的方法
    	}
    };

    4、在方法中定义内部类

    class Outer{		// 定义外部类
    	private String info = "hello world" ;	// 定义外部类的私有属性
    	public void fun(final int temp){		// 定义外部类的方法
    		class Inner{						// 在方法中定义的内部类
    			public void print(){				// 定义内部类的方法
    				System.out.println("类中的属性:" + info) ;		// 直接访问外部类的私有属性
    				System.out.println("方法中的参数:" + temp) ;
    			}
    		};
    		new Inner().print() ;				// 通过内部类的实例化对象调用方法
    	}
    };
    public class InnerClassDemo05{
    	public static void main(String args[]){
    		new Outer().fun(30) ;	// 调用外部类的方法
    	}
    };


  • 相关阅读:
    运维常见面试题
    python常见面试题
    常见面试题
    常用算法之‘归并排序’
    python库大全
    Springboot拦截器无效,解决办法
    Springboot 不返回页面,只反回文本
    SpringBoot 接收参数的几种常用方式(转载)
    mysql 查询每个分组的前几名
    Java中TimeZone类的常用方法
  • 原文地址:https://www.cnblogs.com/riskyer/p/3315224.html
Copyright © 2011-2022 走看看