Java内部类

目录

​编辑

内部类(重点:各类的定义与使用)

成员内部类

使用的相关代码

局部内部类

相关代码

匿名内部类

 适用环境

声明和构建的一般格式

使用模板

代码举例

静态内部类


内部类(重点:各类的定义与使用)

pubilc class OuterClass{

   //成员变量和方法

   class InnerClass{       //一个内部类的定义

      //成员变量和方法

   }

}

成员内部类

   结:定义在外部类的类体中;

          没有使用static修饰;

          可使用private、public等修饰符;

          创建对象要具有外部类的引用。

使用的相关代码

private int a = 0;

public class InnerClass{  //成员变量的定义

   int b = 1;

   public int calaulate(){

      return a + b;  //理解外层类成员a时可以去联想一下 全局变量 的使用

   }

public void makeInner(){

   InnerClass ic = new InnerClass();  //创建内部类对象

   system.out.println(ic,calculate());

}

main://输出

OuterClass outer = new OuterClass();

OuterClass.InnerClass inner = outer.new InnerClass();

System.out.println(inner.calculate());

局部内部类

注意:在哪里定义就要在哪里使用

   结:定义在方法体或语句块内的类;

          不能使用访问修饰符;

          可访问外层类的成员。

like局部变量一样去使用;

在方法体外部不能创建InnerClass类的对象,但可以访问外层类的实例变量,访问方法的参数,访问方法final局部变量。

相关代码:

class InnerClass(){

   system.out.println(x);  //外层类的实例变量

   system.out.println(y);  //访问方法final局部变量

   system.out.println(param);  //访问方法的参数

}

new InnerClass().seeOuter();

匿名内部类

(没有名字的类)

    结:类定义与常见实例在一处完成;

           可继承一个类或实现一个接口;(不能同时继承,也不能继承多个)

           应用在事件处理和Lambda表达式。

 适用环境:

         某个类的实例只使用一次时,将类的定义与实例创建在一起,或者在定义类的同时就创建一个实例。

声明和构建的一般格式:

new TypeName(){

  //此处为类体

}//返回一个对象引用

 类体中不能定义构造方法。

使用模板:

直接使用或赋给一个引用变量

TypeName obj = new TypeName(){

   //此处为类体

};

or

作为方法调用的参数

someMethod(new TypeName(){

   //此处为类体

});

代码举例:

Animal dog = new Animal(){    //这里继承了Aniimal类,并且创建了一个匿名类实例,用dog指向它

   @override    //方法重写

   public void eat(){

      System.out.println("I like eat bones.");

   }

};      //这里的分号“;”是赋值语句的结束

dog.eat();

静态内部类

    结:定义在外部类的类体中且用static修饰;

           只能访问外层类的static成员;

          创建实例不需要外部类的引用。 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值