Java 内部类

内部类

内部类通俗的讲就是在一个类中嵌套的另一个类,但是不能和外部类同名

内部类的定义

1.将类的定义class xxxx{…}置入一个类的内部即可
2.编译器生成xxxx$xxxx这样的class文件
3.内部类不能够与外部类同名

内部类的使用

1.在封装它的类的内部使用内部类,与普通类的使用方式相同
2.在其他地方使用
•类名前要冠以外部类的名字。
•在用new创建内部类实例时,也要在 new前面冠以对象变量。
外部对象名.new 内部类名(参数)
下面写一个实例

class TestInnerclass
{  
    public static void  main(String arg[])
   {
    //创建实例对象
    Parcel p = new parcel ();
    p.testship();
    //外部对象名.new 内部类名(参数)
    parcel.Contents c = p.new.Contents(33);
    parcel.Destination d  = p.new.Destination("jiangxi");
    p.setProperty(c,d);
    p.ship();
   }
 }


class Parcel
{
 private Contents c;
 private Destination d 
 class Contents//内部类
  {
    private int i;
    Contents(int i){ 
    this.i = i;
    } 
    int value(){
     return i ;
     }
}
class Destination //内部类
 {
  private String lable;
  Destination (String WhereTo) {  
     lable = WhereTo;
   }
   String Readlable(){
     return lable;
   }
  }

void setProperty(Contents c ,Destination d){
  this.c = c;
  this.d = d;
}
void ship(){   
 System.out.println("move" + c.value() +"to" + d.Readlable());
}
public void testship(){
  c = new Contents(22);
  d = new Destination("beijing");
  ship();
 }
}

在内部类中使用外部类的成员

1.内部类中可以直接访问外部类的字段及方法
即使private也可以
2.如果内部类中有与外部类同名的字段或方法,则可以用
外部类名.this.字段及方法
下面煮个栗子

class A
{
  private int s= 111;
  public class B//内部类
  {
    private int s = 222;
    public void mb(int s)
    {
      System.out.println(s);//输出局部变量s
      System.out.println(this.s);//输出类B的变量s
      System.out.println(A.this.s);//输出类A的变量s
      }
  }

}

内部类的修饰符

内部类与类中的字段、方法一样是外部类的成员,它的前面也可以有访问控制符和其他修饰符。

访问控制符:public,protected,默认及private。
( 注:外部类只能够使用public修饰或者默认)
final,abstract 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值