Java 内部类的使用

<span style="background-color: rgb(255, 255, 0);"><span style="font-family:KaiTi_GB2312;font-size:24px;"><strong>内部类的主要作用如下</strong></span></span>

1.内部类提供了良好的封装,可以把内部类隐藏在外部类之内,不允许同一个包内的其他类访问。

2.内部类成员可以直接访问外部类的私有数据。

3.匿名内部类适合用于创建那些仅需要一次使用的类。

内部类与外部类的两点区别

1.内部类比外部类可以多三个修饰符:private、protected、static——外部类不可以使用这三个修饰符

2,.非静态内部类不能拥有静态成员

非静态内部类

非静态内部类的成员可以访问外部类的private成员,但反过来就不成立了,非静态内部类的成员只在非静态内部类范围内是可知的,并不能被外部类直接使用,如果外部类要访问非静态内部类的成员,必须显式创建非静态内部类的对象来调用访问其实例成员。

静态内部类

如果使用static来修饰一个内部类,则这个内部类就属于外部类本身,而不属于外部类的某个对象,因此使用static修饰的内部类被称为类内部类,也就是静态内部类。

静态内部类可以包含静态成员,也可以包含非静态成员,根据静态成员不能访问非静态成员的规则,静态内部类不能访问外部类的实例成员,只能访问外部类的静态成员。

下面是内部类调用外部类非静态成员的错误示例

package 内部类;

public class Out {
      private int age=10;
      private static int age1=20;
      static class In{
    	  public int age2=30;
    	  public void test(){
    		  //静态内部类调用外部类的非静态成员
    		  System.out.println(age);
    		  System.out.println(age1);
    	  }
    	  
     }
     public static void main(String[] args) {
		new In().test();
	}
}


下面分三种情况讨论内部类的用法

1.在外部类内部使用内部类

在外部类内部使用内部类时,与平常使用普通类没有太大区别。一样可以直接通过内部类类名来定义变量,通过new调用内部类构造器来创建实例。

2.在外部类以外使用非静态内部类

>>使用private修饰的内部类只能在外部类内部使用,外部类以外的类无法访问。

>>省略访问控制符(default)的内部类,只能被与外部类处于同一个包中的其它类所访问。

>>使用protected修饰的内部类,可被与外部类同一个包中的类以及外部类的子类访问。

>>使用public修饰的内部类,可以在任何地方被访问。

3.在外部类以外使用静态内部类

语法:      外部类.内部类 变量名=new 外部类.内部类();  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值