类与接口

来源:互联网 发布:深海逃生剧情 知乎 编辑:程序博客网 时间:2024/05/01 14:38

面向对象-继承

  • java只支持单继承,不支持多继承。也就是说一个子类只有一个父类。
  • java支持多级继承。class A{} class B extends A{} class C extends B{}

子父类中变量的特点

  • 加载子类时先要加载父类,也就是先要执行父类的构造函数。(若有静态代码块和构造代码块,则静态代码块和构造代码块先执行)
  • 父类的对象可以使用子类的构造函数初始化,子类的对象不能通过父类的构造函数初始化。父类的对象通过子类的构造函数初始化后,该对象不能调用子类的函数。
  • super关键字只能调用直接父类的成员,不能调用父类的父类的成员。

重写(覆盖)

  • 子父类的函数必须一致才称为重写(函数名+参数列表+返回值类型)。子类重写父类函数时必须能够看到父类的函数(父类函数不能为私有函数)。父类的私有函数不能重写。
  • 子类函数重写父类的函数时,必须要保证子类函数权限要大于等于父类函数的权限。
  • 静态函数只能由静态函数重写。
final 关键字
  • final关键字可以修饰类,函数和变量。
  • final修饰的类不能被继承。
  • final 修饰的函数不能被重写。
  • final 修饰的变量只能被赋值一次。final int x;x=0//ok final int x=9;//ok final int x=0;x=1//error
  • 内部类只能访问被final修饰的局部变量。

抽象类

  • 关键词 abstract。
  • 抽象方法(类似于c语言中的函数声明)只能存在于抽象类中。但是抽象类中可以存在非抽象方法。
  • 抽象类和抽象方法必须使用abstract修饰。
  • 抽象类不能实例化,只能用于继承。
  • 如果子类只是重写了部分抽象方法,则该子类还是一个抽象类。
  • 抽象类有构造方法,只是不能直接创建抽象类的实例对象而已。
  • 子类重写了父类的全部抽象函数,则该子类可以实例化。

接口

  • 关键词是interface。
  • 接口中的成员修饰符是固定的。变量 public static final 函数 public abstract。
  • 接口不可以创建对象。接口之间可以进行多继承。
  • 接口可以扩展类的功能。
  • 基本功能定义在类中,扩展功能在接口中。
0 0