java面向对象4

1.interface

  • 接口定义一种规范,规定一个类必须做什么,但它不管如何具体去做;
  • [修饰符] interface 接口名 extends 父接口1,父接口2....
    没有构造方法,不能实例化;
    接口只能继承接口,不能继承类
    接口里没有普通方法,方法全是抽象的;
    接口里的方法默认修饰符是public abstract;
    接口里的字段全是全局常量,默认修饰符是public static final;
  • 接口里的成员包括(主要是前两个):
    全局常量
    公共的抽象方法
    内部类(包括内部类,内部接口,内部枚举类);

2.使用接口

  • 格式:public class SubImpl extends Super implements IA,IB
  • 实现接口(支持多实现)
    [修饰符] class 类名 implements 接口1,接口2...
    接口的实现必须在 extends 之后;
    实现接口的方法必须是 public 类型
    接口不能创建实例,但是可以声明引用类型的变量。
    此时,引用类型的变量必须指向到其实现类对象。
    IStudent s = new String();//
    IStudent s = new StudentImpl();//

3.抽象类和接口的区别

4.内部类

  • 非静态内部类;静态内部类,局部内部类;
    1. 非静态内部类
    访问外部类的字段:外部类类名.this.字段
    访问内部类字段:this.字段
    访问内部类方法的局部变量:字段
    2. 静态内部类
    使用static修饰内部类,该内部类属于其外部类,而不属于外部类的实例;
    静态内部类可包括静态成员也可包括非静态成员。根据静态成员不能访问非静态成员的规定,所以静态内部类不能访问外部类实例成员,只能访问外部类的静态成员;
    3. 局部内部类
    局部内部类:定义在方法里的内部类;
    特点:不能在宿主类以外的地方使用,局部内部类也不能使用访问修饰符和static修饰;
    局部内部类只能访问方法中final修饰的局部变量:因为final修饰的变量相当于一个常量,其生命周期超出了方法运行的生命周期
    4. 匿名内部类
    适合只使用一次的类
    不能是抽象类,因为系统在创建匿名内部类的时候,会立即创建匿名内部类的对象。
    匿名内部类不能定义构造器,因为匿名内部类没有类名。

  • 匿名内部类适合于仅使用一次使用的类;匿名内部类必须继承一个父类或者实现一个接口,但最多只能一个父类或实现一个接口;

原文地址:https://www.cnblogs.com/linbin7/p/14528152.html