Java中内外部类可以相互访问吗_java内部类和外部类相关访问总结

内部类的作用:

内部类可以很好的实现功能隐藏,可以添加private、protected等权限控制

可以避免修改接口而实现同一个类中两种同名方法的调用

可是实现多重继承(重要)

内部类和外部类相互调用方式:

一:非静态内部类

内部类调用外部类

1.非静态内部类,不能存在静态方法

2.非静态方法,调用外部类的非静态方法、静态方法都可以直接调用

外部类调用内部类

1.非静态方法,调用内部的非静态方法 new Inner().innerMethod();

2.静态方法,调用内部类的非静态方法 new Outer().new Inner().innerMethod();

二:静态内部类

内部类调用外部类

1.非静态、静态方法,调用静态方法直接调用

2.非静态、静态方法,调用非静态方法 new Outer().outMethod();

外部类调用内部类

1.非静态、静态方法,调用非静态方法 new Outer.StaticInner().innerMethod();

2.非静态、静态方法,调用静态方法 Outer.StaticInner.innerStaticMethod();

**示例代码

public class Outer {

private void outMethod(){

System.out.println("i am out non-static method");

new Inner().innerMethod();

new Outer.StaticInner().innerMethod();

Outer.StaticInner.innerStaticMethod();

}

private static void outStaticMethod(){

System.out.println("i am out static method");

new Outer().new Inner().innerMethod();

new Outer.StaticInner().innerMethod();

Outer.StaticInner.innerStaticMethod();

}

class Inner{

private void innerMethod(){

System.out.println("i am inner non-static method");

outMethod();

outStaticMethod();

}

// //error non-static class canot have static cmethod

// private static void innerStaticMethod(){

// System.out.println("i am inner static method");

// }

}

static class StaticInner{

private void innerMethod(){

System.out.println("i am staticinner non-static method");

outStaticMethod();

new Outer().outMethod();

}

private static void innerStaticMethod(){

System.out.println("i am staticinner static method");

outStaticMethod();

new Outer().outMethod();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值