第六章 内部类

内部类就是在一个类的内部在创建一个类。内部类的好处
1. 内部类的对象能够访问它的对象的所有方法和属性,包括私有数据。
2. 匿名内部类可以很方便的定义回调。
3. 内部类可以很方便的编写事件驱动的程序。

7.1 使用内部创建对象
public class school{
    public void setStudentCourse(String [] courses){
        new Course(courses)
    }
    private class Course{
        private Stringp[] course;
        public course(String [] course ){
            this.course =course;
            getInfo();
        }
        void getInfo(){

        }
    }

}
7.2 局部内部类

局部内部类就是在某个类的方法中定义一个内部类,作用范围在这个方法体内,与局部变量一样,不加修饰符。
1. 局部访问变量必须加final修饰,因为局部变量使用完毕就消失,而堆内存的数据并不会立即消失。
所以,堆内存还是用该变量,而改变量已经没有了。
为了让该值还存在,就加final修饰。
通过反编译工具我们看到了,加入final后,堆内存直接存储的是值,而不是变量名。

public class school{
    public void setStudentCourse(String [] courses){
     final class Course{
        private Stringp[] course;
        public course(String [] course ){
            this.course =course;
            getInfo();
        }
        void getInfo(){

        }
        new Course(courses)
    }
    }


}
7.3 静态内部类

当一个内部类不需要引用他的外部类的方法、属性值时,可以将类设置为static,这就算是静态内部类。单例的时候可以考虑使用静态内部类。

7.4 匿名内部类

匿名内部类是一种特殊的局部内部类,用来继承一个类或者实现一个接口。

interface Person {
   public abstract void study();
  }

  class PersonDemo {
   public void method(Person p) {
    p.study();
   }
  }

  class PersonTest {
   public static void main(String[] args) {
    PersonDemo pd = new PersonDemo();
    pd.method(new Person() {
     public void study() {
      System.out.println("好好学习,天天向上");
     }
    });
   }
  }
  //看下面
  interface Inter {
   void show();
  }

  class Outer {
   //补齐代码
   public static Inter method() {
    return new Inter() {
     public void show() {
      System.out.println("HelloWorld");
     }
    };
   }
  }

  class OuterDemo {
   public static void main(String[] args) {
    Outer.method().show(); //"HelloWorld"
   }
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值