内部类
2015-08-01 13:50
330 查看
HOW:基本使用
/** *需求1:在Outer类中定义内部类Inner *需求2:Inner内定义一个vistOuter方法访问Outer的x属性 *需求3:Outer内定义一个vist方法访问Inner的vistOuter方法 */ class Outer { String x="outer"; //定义内部类 class Inner { String x="inner"; //内部类可以不创建外部类的对象而访问外部类的属性Outer.this.属性 void vistOuter(){ System.out.println("访问到的是:"+Outer.this.x); } } //外部类不能直接访问内部类的方法,必须要先创建内部类的对象,通过该对象访问 void vist(){ //new Inner()看成一个对象,再.方法 new Inner().vistOuter(); } }
注意事项
1.内部类与外部类的成员同级,所以内部类可以被private修饰!2.内部类与外部类的成员同级,所以内部类可以访问外部类的成员变量,即使是private
3.如果一个内部类中有静态变量或者静态声明,那么它必须是静态内部类=》如果是静态内部类,那么:Outer.Inner.x或Outer.Inner.function()可以访问其静态成员或方法
4.静态类不能直接访问本类的成员或者方法:可以通过实例化之后再访问
class Outer { static int x=5; //因为外部类中定义了静态成员,所以这里必须是静态内部类 static class Inner { //本类非静态成员 int x=1; //本类静态方法 static void vistOuter(){ System.out.println(Outer.x); } } } class StaticNeiBu { public static void main(String[] args) { //调用静态内部类的静态方法:输出外部类静态成员变量 Outer.inner.vistOuter(); //访问静态内部类的非静态成员x System.out.println(new Outer.Inner().x); } }
相关文章推荐
- linux系统配置Apache虚拟主机实例
- FTP使用MariaDB完成虚拟用户认证
- sqlcoder
- linux中图形界面改成文本
- 求一棵二叉树的宽度
- Java日志框架——基本概念
- Spring应用 - 2
- getView()执行次数问题(自己再次测试,顺便做个记录)-------再再次
- 敌兵布阵(树状数组)
- 二维码zxing源码分析(二)decode部分
- ural 1017
- HTML <input> 标签的 type 属性
- LeetCode "Different Ways to Add Parentheses"
- win7,linux双系统删除linux系统
- 二维向量:vector<vector<int>>
- hdu 1364 Illusive Chase
- Servlet 取表单的值
- linux高频率命令
- 设计模式 依赖倒转原则 & 里氏代换原则
- nginx File not found 错误分析与解决方法