Java

1.内部类

1)什么是内部类

  • 一个类的内部创建的类

我们将外部类称为Outer 将内部类称为Inner

2)怎么定义内部类

1. 成员内部类

  • 在类的成员位置声明的内部类
  class Outer{
     class Inner{
     }
  }
  • 1.1)成员内部类能使用四种访问修饰符修饰
  • 1.2)内部类和外部类的私有属性互相可以访问
  • 1.3)当外部类和内部类的成员同名时 内部类中直接调用是内部类的成员 要想调用外部类的成员需要

    * <外部类名>.this.<成员>
  • 1.4)一般情况下 内部类的使用只在外部类中 通过内部类减少java文件的数量
  • 1.5)每个内部类都会有自己独立的 class文件 格式为 外部类名$内部类名.class

2.匿名内部类

SuperType obj=new SuperType() {

    //需要被重写的方法
}

一般情况下匿名内部类 指在方法中通过继承类或实现接口 来编写的没有名字的内部类

  • 2.1)外部类的私有属性匿名内部类可以使用
  • 2.2)外部类和内部类的成员如果重名 直接调用是内部类的 要想调用外部类类 <外部类名>.this.<成员>
  • 2.3)匿名内部类是在方法中就地 编写某个类的子类 并且自动向上造型; 只能使用在声明它的方法中。
  • 2.4)当需要继承一个父类 而且这个子类对象只使用一次时 就可以在要使用这个子类对象的位置通过匿名内部类来实现
  • 2.5)每个内部类都会有自己独立的 class文件 格式为 外部类名$自动生成的编号.class
  • 2.6)匿名内部类中如果要使用 它所在方法的局部变量 必须将这个局部变量视为被 final修饰的
  • 2.7)JDK1.7以及1.7之前 在匿名内部类中使用 它所在方法的局部变量 必须将这个局部变量设置为 final修饰才可以

2.计时器

1)什么是计时器

  • 能按照约定好的时间间隔
  • 周期性的调用指定方法的对象

2)怎么定义计时器

  • Timer tim=new Timer();

3)定义要调用的指定方法

  • 使用匿名内部类实现一个 TimerTask类的子类
  • 重写类中的run方法

4)启动计时器

  • Timer对象的schedule方法
  • 启动计时器周期调用方法即可

通过编写计时器的代码 实现每隔1000毫秒 从1开始输出数字 一直输出,越输出越大

Timer tim=new Timer();
TimerTask task=new TimerTask() {
  int i=1;
  public void run() {
    System.out.println(i);
    i++;
  }
};
tim.schedule(task, 3000,500);

Comment

This is just a placeholder img.