继承、this、super

继承:

  定义一个类时,发现已有类和要定义的类相似 ,并且 要定义的类 属于 已有类一种可以将要定义的类定义为已有类的子类。
方法重写:

  继承后,子类可以使用父类所有非私有的属性和功能,但是如果子类觉得父类的方法不够强大 按照自身的逻辑
  重新定义此方法 这个过程叫做方法重写、方法复写、方法覆盖
方法重写的注意事项
  1.可以使用@Override来检验是否为方法重写
  2.方法重写 子类方法的访问权限要大于等于父类方法的访问权限(public、default、private、protect)
  3.推荐子类重写方法的声明和父类方法完全一致
  4.当方法重写时,如果返回值类型是基本类型 子父类方法的返回值类型必须一致
如果返回值类型是引用类型 子类方法的返回值类型可以是父类方法返回值类型的子类
  注意:
    父类对象优先于子类对象产生
    在子类的每一个构造方法的第一行 都有默认的一个super()调用父类的空参构造方法

    super(参数)可以调用父类的指定参数的构造方法、在对父类进行赋值时可用。

    this(参数)可以调用本类其他的构造方法 但是也必须写在构造方法的第一行
    **this()和super()都需要写在构造方法的第一行 所以不能共存在

变量的访问原则

  就近访问

      1、子类局部> 子类成员 >父类成员
      2、this.属性名 访问本类的成员变量
      3、super.属性名 访问父类的非私有的成员变量
      4、this.方法名(参数) 访问本类的成员方法
      5、super.方法名(参数) 访问父类的非私有的成员方法

抽象方法:

    只有方法声明 没有方法体的方法 可以定义为抽象方法
    eg:public abstract void XXX();
抽象类:

    有抽象方法的类必须定义为抽象类

注意:

  abstract 只能修饰 方法和类

抽象类的使用

  1.抽象类不能创建对象
  2.定义子类继承抽象类
  3.重写抽象方法(实现方法)
  4.创建子类对象 调用方法

抽象类的特点(JDK1.7前)
  1.抽象类一定是一个父类
  2.抽象类中可以有具体的方法 供子类使用
  3.抽象类可以没有抽象方法
  4.抽象类可以有多个抽象方法 子类必须全部实现这些抽象方法 子类才可以创建对象, 如果不实现 子类也得是一个抽象类
  5.抽象类有构造方法 为了子类使用

抽象类出现的意义
  1.抽象类定义类共性内容 供子类使用 提供了代码的复用性
  2.抽象类强制子类实现了方法

猜你喜欢

转载自www.cnblogs.com/JunQiang-Ma/p/9958639.html