JAVA基础学习总结,day9(继承,Object,抽象类)

继承:

继承的概述

现实生活中继承:子承父业,用来描述事物之间的关系
代码中继承:就是用来描述2个类之间的关系,并且子类拥有父类的成员变量和成员方法

继承的格式:
        public class 类A extends 类B{


        }

        特点:类A继承类B,类A是子类,类B是父类

好处:

  1. 提高代码的复用性
  2. 可以让类与类之间产生关系,形成多态的条件
继承的特点:
  1. 子类拥有父类的成员变量和成员方法
  2. 子类只能直接访问父类的非私有成员,不能直接访问私有成员(成员变量和成员方法)
  3. java中的继承只能单继承,不能多继承(相当于我们人只能有一个亲爹)
  4. java中可以多层继承(儿子有爸爸,儿子有爷爷)
继承后如何访问成员变量
  • 父子类中不同名的成员变量: 正常访问,无影响
  • 父子类中同名的成员变量: 遵守就近原则
  • 优先在局部位置找,如果局部位置有该变量,就直接使用,如果没有,就去本类成员位置找,如果有,就直接使用

如果本类成员位置没有,那么就去父类的成员位置找,如果有就直接使用,如果没有就报错

            super:关键字,代表父类的引用
继承后如何访问成员方法:
  • 父子类未出现同名的方法:正常访问
  • 父子类中出现同名的方法: 优先调用子类中的方法(构造方法除外)

方法的重载:在同一个类中,出现多个同名的方法,参数列表不同,与返回值类型,修饰符无关
方法的重写:子类中出现和父类中一模一样的方法(包括返回值类型,方法名,参数列表)

方法重写的注意事项:

  1. 重写的方法必须要和父类一模一样(包括返回值类型,方法名,参数列表)
  2. 重写的方法可以使用@Override注解来标识
  3. 子类中重写的方法的访问权限不能低于父类中方法的访问权限
       权限修饰符 : private   <     默认(什么都不写)   <       protected       <      public

为什么要重写方法:

  1. 当父类中的方法无法满足子类需求的时候,需要方法重写
  2. 当子类具有特有的功能的时候,就需要方法重写
继承后如何访问构造方法:
  • 访问父类的空参构造方法: super();
  • 访问父类的有参构造方法: super(实际参数);
注意事项:
  1. 构造方法不能被子类继承,但是可以使用
  2. 子类的空参构造方法会默认调用父类的空参构造方法
  3. 子类的有参构造方法也会默认调用父类的空参构造方法
  4. 在子类中使用super()访问父类的空参构造方法必须放在第一行,先调用父类的构造方法
  5. 在子类中使用super(实参)访问父类的有参构造方法必须放在第一行,先调用父类的构造方法

补充: java中所有的类都是直接或者间接继承Object类

Object:

概述:类 Object 是类层次结构的根类

构造方法:

  • Object()

成员方法:

  • String toString() 返回该对象的字符串表示(可以遍历数组)

super关键字的三种用法:(访问父类的成员变量和成员方法)

  • 访问父类的成员变量:super.父类成员变量名

  • 访问父类的成员方法:super.父类成员方法名(实参);

  • 访问父类的构造方法:

    • 访问父类的空参:super();

    • 访问父类的有参:super(实参);

this关键字的三种用法:(访问本类的成员变量和成员方法)

  • 访问本类的成员变量: this.本类成员变量名 常用

  • 访问本类的成员方法: this.本类成员方法名(实参); 不常用

  • 访问本类的构造方法: 不常用

    • 访问本类的空参: this();

    • 访问本类的有参: this(实参);

注意:

  1. 访问本类的空参或者有参都需要放在第一行
  2. 不能同时有参调用空参,空参再调用有参

this和super的使用区别

  • A:调用成员变量
    • this.成员变量 调用本类的成员变量,也可以调用父类的成员变量
    • super.成员变量 调用父类的成员变量
  • B:调用构造方法
    • this(…) 调用本类的构造方法
    • super(…) 调用父类的构造方法
  • C:调用成员方法
    • this.成员方法 调用本类的成员方法,也可以调用父类的方法
    • super.成员方法 调用父类的成员方法

抽象类:

抽象方法的概述:没有方法体的方法,并且使用abstract关键字修饰的方法

抽象类的概述:使用abstract修饰的类就是抽象类

抽象方法的格式

  • 权限修饰符 abstract 返回值类型 方法名(形参);

抽象类的格式

          public abstract class 类名{
                    

          }

抽象类的特点:

  1. 有抽象方法的类一定是抽象类,但是抽象类不一定有抽象方法
  2. 抽象类是不可以直接创建对象的,但是可以通过其子类来创建对象
  3. 抽象类中有构造方法,但是不可以用来创建对象,但是可以供子类初始化父类的成员变量
  4. 抽象类的子类如果是普通类,那么必须实现抽象类中的抽象方法
  5. 抽象类的子类如果是抽象类,那么就可以不用实现抽象类中的抽象方法

抽象类也是一个类,和普通类的区别:

  1. 抽象类可以定义抽象方法,而普通类不可以
  2. 抽象类不可直接创建对象,但是普通类可以
  3. 抽象类的子类如果是普通类,必须重写抽象类中的抽象方法,如果子类是抽象类,可以不用重写

你可能感兴趣的:(java基础)