您的位置:首页 > 编程语言 > Java开发

java基础 内部类 简单总结

2015-10-21 18:01 501 查看

简单明了代码直接上

四种内部类详细,都有注释

/**
*
* @author wuyishun_kmk@outlook.com
* 内部类4种方法总结
*/
public class InnerClass {
public static int staticId = 123;
public int id = 123;

/**
* 成员内部类 直接使用Outer.this表示外部类对象 外部类要访问内部类的 成员变量,要通过对象来获取
*/
public class InnerMemberClass {
public void sys() {
System.out.println("成员内部类访问外部类的变量" + InnerClass.this.id);
}
}

/**
* 静态 内部内
* 只可以访问外部类的静态成员和静态方法
*/
public static class InnerStaticClass {
public void sys() {
System.out.println("静态内类访问外部类的静态变量" + staticId);
}
}

/**
* 局部内部类 定义在方法中 只能访问外部类的方法或代码块中定义为final类型的局部变量
* 只能在方法或代码块中使用,对外界不透明
* 在android中很常见
*/
public void localMethod() {
int localId1 = 99;
final int localId2 = 99;
// 不能被public, protected, private和static修饰
class localInner {
public void sys() {
System.out.println("局部内部类 访问外部类的变量" + id);
// System.out.println("访问外部方法中的变量"+localId1);不能访问
System.out.println("访问外部方法中的变量" + localId2);
}
}
// 只能在方法类使用
new localInner().sys();
}

/**
* 测试方法
* @param a
*/
public static void main(String[] a) {
// 成员内部类的创建
InnerClass.InnerMemberClass memberClass = new InnerClass().new InnerMemberClass();
memberClass.sys();

// 静态内部内创建
InnerClass.InnerStaticClass staticInner = new InnerClass.InnerStaticClass();
staticInner.sys();

// 局部内部类调用,直接调用方法
InnerClass inner = new InnerClass();
inner.localMethod();

// 匿名内部测试
new anonyClass() {
@Override
public void oneMethod() {
System.out.println("重写了anonyClass中的抽想法 方法");
}
}.sys();
}
}

abstract class anonyClass {
public void sys() {
oneMethod();
System.out.println("这个是用于测试匿名内部内的");
}

/**
* 在这里用了模板设计模式,在子类中重写
*/
public abstract void oneMethod();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: