内部类

什么是内部类?内部类的作用?
1、静态内部类
把一个类定义在一个类的内部,这个类就称之为静态内部类。
可以访问外部类的成员。外部类想要访问内部类就要创建对象
2、成员内部类
创建对象的方法
成员内部类不是静态的:
外部类名.内部类名 对象名=new 外部类型().new.内部类();
成员内部类是静态的时候:
外部类名.内部类名 对象名=new 外部类名.内部类名();
局部内部类就是定义在一个方法的类
为什么局部内部类访问局部变量必须加final修饰呢?因为局部变量是随着方法的调用而调用,使用完毕就消失,而堆内存的数据并不会立即消失。所以,堆内存还是用该变量,而该变量已经没有了。为了让该值还存在,就加final修饰。原因是,当我们使用final修饰变量后,堆内存直接存储的是值,而不是变量名。

我们所知道static是不能用来修饰类的,但是成员内部类可以看做外部类中的一个成员,所以可以用static修饰,这种用static修饰的内部类我们称作静态内部类,也称作嵌套内部类.
特点:不能使用外部类的非static成员变量和成员方法

public interface Demo {
void show();
}

class Outer {
private class test implements Demo {
public void show() {
System.out.println(“密码备份文件”);
}
}

  public Demo getInner() {
      return new test();
  }

}我们来看其测试 public static void main(String[] args) {
Outer outer = new Outer();
Demo d = outer.getInner();
i.show();
}

//运行结果
密码备份文件这样做的好处之一就是,我们可以在这个public方法中增加一些判断语句,起到数据安全的作用。其次呢,我们的对外可见的只是getInner()这个方法,它返回了一个Demo接口的一个实例,而我们真正的内部类的名称就被隐藏起来了(二) 实现多继承 ※
样的话我就有点懵了,这样如何区分这个方法是接口的还是继承的,所以我们使用内部类解决这个问题 public class DemoTest extends MyDemo {


private class inner implements Demo {
public void test() {
System.out.println(“接口的test方法”);
}
}

  public Demo getIn() {
      return new inner();
  }
  
  
  public static void main(String[] args) {
      //调用接口而来的test()方法
      DemoTest dt = new DemoTest();
      Demo d = dt.getIn();
      d.test();

可以实现多继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值