Java基础语法(十)

版权声明:作者已开启版权声明,如转载请注明转载地址。 https://blog.csdn.net/qq_34829447/article/details/82026905

这里写图片描述

一.继承【is a】

1.继承的概念

  • 继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系
  • 在java中,类的继承是指在一个现有类的基础上去构建一个新的类
  • Java中不允许多继承,但可以多层继承
  • 继承关系的子类特点:子类会自动拥有父类所有非private修饰的属性和方法

2.继承的定义格式和使用

  • 继承的格式

    class 子类 extends 父类{...}

3.继承的好处

  • 继承的出现提高了代码的复用性,提高软件开发效率
  • 继承的出现让类与类之间产生了关系,提供了多态的前提

4.继承的注意事项

  • 在Java中,类只支持单继承,不允许多继承

  • 多个类可以继承一个父类

  • 在Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类

  • 在Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类

    这里写图片描述

5.继承后子类父类成员变量的特点

  • 子类的对象调用成员变量的时候,子类自己有,使用子类,子类自己没有调用的父类

  • 当子父类中出现了同名成员变量时,在子类中若要访问父类中的成员变量,必须使用关键字super来完成

    super.父类中的成员变量

6.继承后子类父类成员方法的特点

  • 子类的对象调用方法的时候,子类自己有,使用子类,子类自己没有调用的父类

  • 成员方法特殊情况——覆盖

    • 子类中出现与父类一模一样的方法时,会出现覆盖操作,也称Override重写、复写或者覆盖

    • 在子类中,访问父类中的成员方法格式:

    super.父类中的成员方法();
  • 子类重写父类方法的注意问题:必须保证子类方法权限大于等于父类方法权限

7.总结内容

当一个类是另一个类中的一种时,可以通过继承,来继承属性与功能。如果父类具备的功能内容需要子类特殊定义时,进行方法重写

二.抽象类Abstract

1.抽象类的产生

分析事物时,发现了共性内容,就出现向上抽取。会有这样一种特殊情况,就是方法功能声明相同,但方法功能主体不同。那么这时也可以抽取,但只抽取方法声明,不抽取方法主体。那么此方法就是一个抽象方法。

2.抽象类的定义格式

  • 抽象方法定义的格式

    public abstract 返回值类型 方法名(参数);
  • 抽象类定义的格式

    abstract class 类名{...}
  • 实例代码

    /*
         *  定义类开发工程师类
         *    EE开发工程师 :  工作
         *    Android开发工程师 : 工作
         *    
         *    根据共性进行抽取,然后形成一个父类Develop
         *    定义方法,工作: 怎么工作,具体干什么呀
         *    
         *    抽象类,不能实例化对象, 不能new的
         *    不能创建对象的原因:  如果真的让你new了, 对象.调用抽象方法,抽象方法没有主体,根本就不能运行
         *    抽象类使用: 定义类继承抽象类,将抽象方法进行重写,创建子类的对象
         */
    public abstract class Develop {
      //定义方法工作方法,但是怎么工作,说不清楚了,讲不明白
      //就不说, 方法没有主体的方法,必须使用关键字abstract修饰
      //抽象的方法,必须存在于抽象的类中,类也必须用abstract修饰
      public abstract void work();
    }

3.抽象类特点

  • 抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。
  • 抽象类不可以直接创建对象,原因:调用抽象方法没有意义。
  • 只有覆盖了抽象类中所有的抽象方法后,其子类才可以创建对象。否则该子类还是一个抽象类。

4.抽象类的设计思想

继承的体系抽象类,强制子类重写抽象的方法

5.抽象类的细节

  • 抽象类一定是一个父类?是的,因为不断抽取而来的。

  • 抽象类中是否可以不定义抽象方法?可以的,那这个抽象类的存在意义是什么呢?不让该类创建对象,方法可以直接让子类去使用

  • 抽象类关键字abstract不能和哪些关键字共存?

    • private:私有的方法子类无法继承到,也不存在覆盖
    • final
    • static
  • 如果子类继承了抽象类,重写了一部分的抽象方法,这个子类还是一个抽象类

    这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_34829447/article/details/82026905