抽象类&接口&内部类

抽象类

类和接口的中庸之道

包含一个或多个抽象方法的类为抽象类

  • 继承抽象类
  1. 子类实现抽象方法
  2. 子类没实现抽象方法就必须限定子类为抽象类

注:

  1. 抽象类不可用private修饰,因为这样就不可以实现抽象方法
  2. 不能创建对象??

接口

  1. 方法确定方法名、参数列表、返回类型,默认为public
  2. 字段隐含定义为public static final,必须被初始化
  3. 实现类的方法和字段必须为public,不可降低可见性

内部类

  • 内部类作用

    实现多重继承:外部类只能继承一个类,而内部类可以继承其他的类,这样解决了单继承的问题

  • 实例内部类

  1. 引用类型:OuterClassName.InnerClassName
  2. 可以访问任何外部类成员(即使是private)
  3. 不能拥有静态成员(静态成员只能在顶级类或者静态内部类中声明)
  4. 内部类生成对外部类的引用: OuterClassName.this,静态内部类不可以这样,因为访问实例内部类必须先有外部类的实例,而.this就是外部类的实例,当访问静态内部类时直接使用类名调用没有外部类实例,所以不能用.this
  5. 创建内部类实例:外部类对象.new 内部类名();
  • 静态内部类
  1. 内部类实例不与外部类实例有任何关联
  2. 可以访问外部类静态成员
  3. 拥有静态和实例成员
  • 局部内部类

    方法内部的类,不希望此类是公共可用的

  • 匿名内部类

      接口 a() {
      	return 接口() {
      		//具体实现
      	};
      }
    

    return返回的是接口的实现类的对象,但是没有具体的名字,其引用通过向上转型为接口的引用

posted @ 2018-11-05 19:11  原来是这样啊  阅读(171)  评论(0编辑  收藏  举报