黑马程序员_内部类

------- android培训java培训、期待与您交流! ----------

1.根据位置的不同,java的内部类分为四种:
(1)静态内部类
 使用static修饰,声明在类体中
 静态内部类可以访问类的静态成员

(2)成员内部类
 声明在类体中,不使用static,具有类的成员特征,也就是,必须有类的实例才能
 创建内部类实例

(3)局部内部类
 把类声明在方法中,就是局部内部类,作用域

(4)匿名内部类
  匿名类  非常常见,可以写在任何地方,就像一般语句
  匿名类是对原类的一个继承,同时创建了实例,{}就是继承以后以后的类体
  类体中可使用所有类的语法
  匿名类不能写构造器
  匿名类可以从抽象类或者接口继承,必须提供抽象方法的实现

2.四种内部类的大概讲解

2.1 静态内部类

public class StateInnerClassDemo{
  public static void main(String[] args){
  Foo.Koo koo=new Foo.Koo();
  System.out.println(koo.add());
  }
}
class Foo{
  int a=1;
  static int b=2;
  //静态内部类的作用域类似静态变量,类加载以后就存在可以在静态内部类中访问静态成员
  static  class Koo{
  int add(){
   return b+1;
   }
  }
}

2.2 成员内部类

public class InnerClassDemo{
  public static void main(String [] args){
 //1.在Goo创建之后,才有Moo,否则会出编译错误
 //Moo moo=new Moo();//编译错误

//2.创建成员内部类
  Goo goo=new Goo();
  Moo moo=goo.new Moo();
//必须使用goo实例创建Moo实例

//3.goo创建的Moo实例可以访问goo实例的属性
  Goo goo2=new Goo();
  goo2.a=2;
  Moo moo2=goo2.new Moo();
  System.out.println(moo.add()+","+moo.add());
  }
}
class  Goo{
int a=1;
static int b=2;
//成员内部类:不使用static说明的内部类
//成员内部类与实例变量具有相同的作用域
class Moo{
 int add(){
 return a+b;
   }
  }
}


2.3 局部内部类

在方法内临时的创建一些类时,可以使用局部内部类

public class LoadInnerClassDemo{
  public static void  main(String [] args){
  final int a=2;

  class Foo{//局部变量
  int b=1;
  public int add(){
  return a+b;  //a是final的局部变量
  }
}

2.4 匿名内部类

2.4.1 匿名内部类,简称匿名类,比较常见

public  class AnnInnerClassDemo{
   public  static  voidmain(String[] main){
    Xoo xoo=new Xoo(){//匿名内部类
}
}
class  Xoo{
}


2.4.2 匿名内部类演示
    public  class AnnInnerClassDemo{
        public static void main(String [] main){
       //匿名内部类new Xoo(){}是对Xoo的继承,并同时实例化
      //  也可以说,new Xoo(){}是Xoo子类实例,是一个对象
        Xoo xoo=new Xoo(){};
       //2."{}",类体中可以声明大部分的功能,比如覆盖tostring的方法
    Xoo xoo1=new Xoo(){
        @Override
      public String toString(){
        return "Hi,Iam xoo1";
          }
        };
      System.out.println(xoo)            //com.itheima.A$1@dc8569
      System.out.println(xoo1);         //Hi,Iam xoo1
     }
}
class  Xoo{}

 

 

------- android培训java培训、期待与您交流! ----------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值