首页 > 其他 > 详细

13 继承、super、this、抽象类

时间:2020-06-17 21:27:48      阅读:77      评论:0      收藏:0      [点我收藏+]

一、继承性

1、定义:子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。

子类可以直接访问父类中的非私有的属性和行为。

2、格式

技术分享图片

3.成员变量的继承

  • 如果子类父类中出现不重名的成员变量,这时的访问是没有影响的。
  • 如果子类父类中出现重名的成员变量,这时的访问是有影响的。

访问规则: 直接通过子类对象访问成员变量。等号左边是谁,就优先用谁。没有就向上找
      间接通过成员方法访问成员变量。看该方法属于谁,就优先用谁。没有就向上找

  • 局部变量、成员变量、父类变量重名咋办啊

局部变量:直接写

本类成员变量:this.成员变量名

父类变量名:super.父类成员变量名

 

4.成员方法的继承

  • 如果子类父类中出现不重名的成员方法,这时的调用是没有影响的
  • 如果子类父类中出现重名的成员方法,这时的访问是一种特殊情况,叫做方法重写 (Override)。

访问规则:创建的对象是谁,就优先用谁,如果没有就向上找

  • 方法重写 :子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效果。声明不变,重新实现。

注意事项:1. 子类方法覆盖父类方法,必须要保证权限大于等于父类权限。(public > protected > default(表示什么都不写,留空)> private)

                  2. 子类方法覆盖父类方法,函数名和参数列表都要一模一样

      3 . 子类方法的返回值必须小于等于父类方法的返回值类型(前提:java.lang.Object类是所有类的公共最高类)

      4.可在前面加上一个 @Override 表示检测方法重写是否写错

 

5.构造方法的继承

  • 子类构造方法中有一个默认隐含的“  super()  ” 调用,调用无参父类方法。先调用父类,后执行子类构造。
  • 子类构造可以用 super  关键字调用 父类重载有参构造方法。
  • super 父类构造调用, 必须是子类构造方法的第一个语句。

 

二、 super关键字用法——用来访问父类内容

  • 在子类成员方法中,访问父类的成员变量
  • 在子类成员方法中,访问父类的成员方法
  • 在子类构造方法中,访问父类的构造方法

三、 this 关键字用法——用来访问本类内容

  • 在本类的成员方法中,访问本类的成员变量
  • 在本类的成员方法中,访问本类的另一个成员方法
  • 在本类的构造方法中,访问本类的另一个构造方法,也必须是第一个语句

技术分享图片

 

 注意: super 和 this 不能同时出现,因为都得是第一个。

 

继承的特点

1. Java只支持单继承,不支持多继承。

技术分享图片

2. Java支持多层继承(继承体系)。 
顶层父类是Object类。所有的类默认继承Object,作为父类。

技术分享图片

3. 子类和父类是一种相对的概念。

 

四、抽象类

1.定义   抽象方法 : 没有方法体的方法。

             抽象类:包含抽象方法的类。

2.格式

如果一个类包含抽象方法,那么该类必须是抽象类。

技术分享图片

 

 3.使用方法

  • 抽象类不能创建对象
  • 必须用一个子类来继承抽象父类
  • 抽象类的子类,必须重写抽象父类中所有的抽象方法,即  子类去掉抽象方法的abstract 关键字,然后补上方法体大括号
  • 创建子类对象进行使用

4.注意对象

  •  抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。
  •  抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。
  •  抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
  •  抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类

13 继承、super、this、抽象类

原文:https://www.cnblogs.com/deepsealin/p/13137677.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!