一、继承的引出

继承作为面向对象语言的三大特征之一,那么什么时候采用继承呢?

下面给出两个例子让大家明白继承的优点

Person类:

Student类: 

通过以上两个程序段的比较可以发现:有大量的代码段都是重复的,在没有了解继承之前,我们没有任何办法去减少这样重复的代码段,此时面对对象的思想就提出了继承的概念。

二、继承的概念

继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。

上述图示中,Undergraduate和Graduate都继承了Student类,其中:Student类称为父类、基类或超类,Undergraduate和Graduate可以称为Student的 子类/派生类,继承之后,子类可以复用父类中成员,子类在实现时只需关心自己新增加的成员属性和方法即可。

三、继承的语法:

1.在Java中如果要表示类之间的继承关系,需要借助extends关键字,具体如下:

2.对上面的学生类以及子类的代码实现:

class Student {public String name;public int age;public  int id;public Student(String name,int age,int id) {this.name=name;this.age = age;this.id = id;}public void doHomework(){System.out.println(name+"在写作业");}public void doClass(){System.out.println(name+"在上课");}
}
//本科生类
class Undergraduate extends Student{public Undergraduate(String name,int age,int id) {super(name,age,id);}public void gePass() {System.out.println(name+"获得了学业证");}
}
//研究生
class Graduate extends Student{public Graduate(String name,int age,int id) {super(name,age,id);}public void doExam() {System.out.println(name+"在做研究");}
}

小结:

1.子类会将父类中的非私有的成员变量或者成员方法继承到子类当中;

2.子类继承父类之后,应该要添加一些父类没有的方法或者属性,否则去继承干什么

四、继承的使用

1.子类访问父类中的成员变量:

小结:

1.如果访问的成员变量子类有,就直接访问自己的;

2.如果访问的成员变量子类没有,就访问父类继承而来的,如果父类也没有,就报错;

3.如果访问的成员变量与父类的成员变量同名,优先访问自己的,如果要访问父类的通过super.父类变量名

2.子类访问父类中的成员方法:

小结:

1.当访问父类和子类不同名方法时,先去子类找,找到就访问,找不到去父类找,找到就访问,否则就编译报错

2.当访问父类和子类不同名方法时,如果子类中有就优先访问自己的,如果要访问父类的,通过super.父类方法名()

 3.子类构造方法: 

父子父子,有其父再有其子,即:子类对象构造时,需要先调用基类(父类)的构造方法,然后执行子类的构造方法。

注意:

1.若父类显示定义无参或者默认的构造方法,在子类构造方法第一行默认有隐含的super()调用,即调用基类构造方法

2.如果父类构造方法是带有参数的,此时编译器不会再给子类生成默认的构造方法,此时需要用户为子类显式定义构造方法,并在子类构造方法中选择合适的父类构造方法调用为父类的成员变量初始化,否则编译失败

3.super只能在子类的构造方法中出现一次,并且不能和this同时出现

4.继承方式:在java中,不支持多继承,只支持多层继承,虽然支持多层继承,但是继承的层数太多反而变得复杂麻烦,此时继承就不适合了,就应该考虑重构了

五、super总结

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

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

3.super访问父类的构造方法:super(.....);

4.super的使用不能出现在静态的方法中

Java 继承(extends)相关推荐

  1. Java——继承——Extends

    继承 为什么要继承呢? 继承的语法 继承的概念 子类中访问父类性质 Java的单继承 super和this 子类构造方法 protected中super的使用 final关键字 今天我们来说说面向对象 ...

  2. java继承extends

    一.什么是继承 继承:在现实世界当中也是存在的. 例如:父亲很有钱,儿子不用努力也很有钱. 二.继承的作用: 基本作用:子类继承父类,代码可以得到复用.(这个不是重要的作用,是基本作用.) 主要作用: ...

  3. java 继承extends

    继承 1.1继承的概述 继承是面向对象的三大特征之一,可以使得子类具有父类的属性和方法,还可以在类中重新定义,追加属性和方法. 格式: public class 子类名 extends 父类名{} 范 ...

  4. java 继承 extends

    extends来表示继承关系 class 父类 {}class 子类 extends 父类 {} this super 子类重写父类方法,使用this调用子类的方法,使用super调用父类的方法 cl ...

  5. JAVA继承extends小练习①

    分析以下需求,并用代码实现 1.定义Person类 属性: 姓名name.性别gender.年龄age.国籍nationality: 方法:吃饭eat.睡觉sleep,工作work. 2.根据人类,创 ...

  6. java 继承 冒号_java继承(extends)简单介绍

    继承相信很多人都有听说过,继承是面向对象的三个基本特征之一,下面的话就一起通过简单的文章来对java继承进行一下了解吧. 继承和现实生活中的"继承"的相似之处是保留一些父辈的特性, ...

  7. 继承(extends)

    继承(extends) 开发工具与关键技术:eclipse java 作者:梁峻豪 撰写时间:2021.5.8 Java继承(extends) Java中的继承就是在已经存在类的基础上进行扩展,从产生 ...

  8. Java继承 implements 与 extends 总结

    关键字implements是一个类,实现一个接口用的关键字,它是用来实现接口中定义的抽象方法.实现一个接口,必须实现接口中的所有方法.使用 implements 关键字可以变相的使java具有多继承的 ...

  9. java 继承 extends_java中的继承 (extends) 详解

    继承(extends) 1. 父类与子类 父类也叫基类.超类  子类也叫派生类  在继承的而关系中,"子类就是一个父类".也就是说,子类可以被当做父类来看待.例如父类是员工,子类是 ...

  10. 继承extends(Java)

    继承extends(Java) 代码一: package JavaSE.java基础语法.src.oop.Demo05; //继承关系 //A extends B 父子关系 A是子类 B是父类 //A ...

最新文章

  1. [swift 进阶]读书笔记-第十一章:互用性 C11P1 实践:封装 CommonMark
  2. zookeeper C API
  3. php socket 用户名密码,PHP用socket模拟post之fsocketopen
  4. 源代码下载 第六章 注解式控制器详解
  5. jquery select change事件_jQuery实现省市联动效果
  6. python web开发 网络编程 TCP/IP UDP协议
  7. 【Flink】Flink SQL Cannot instantiate user function cannot assign instance LinkedMap FlinkKafkaConsum
  8. IntelliJ IDEA 2019.1.1 预览版发布,以及对旧版本的更新
  9. linux java mysql 乱码_Linux下MySQL的字符集乱码问题总结
  10. FastDFS配置之常见错误
  11. [Android开源]EasyExecutor: 让线程任务的使用变得高效、安全、方便、灵活
  12. 全卷积神经网络 图像语义分割实验:FCN数据集制作,网络模型定义,网络训练(提供数据集和模型文件,以供参考)
  13. 如何用五千块的电脑弹奏出价值十万钢琴的效果
  14. mysql视图字段大小_在()MySQL()中,使用()_______()语句可以查看视图的字段信息,其中包括字段名、字段类...
  15. HTTP协议,到底是什么鬼?
  16. 【论文写作技巧】Endnote参考文献统一输出格式
  17. 服务器flv文件播放不了,解决win2003服务器不能播放flv文件格式的问题
  18. java怎么样实现反射_Rust如何实现反射?
  19. 头哥教学平台-泰坦尼克号生还预测
  20. ubuntu系统上安virtualbox虚拟机装win10一路踩坑

热门文章

  1. svn: Aborting commit: '/aaa/bbb/xxxxxxxx' remains in conflict解决方法
  2. ROS遇见问题积累与记录(持续更新)
  3. MySQL 计算百分比
  4. linux下编写打印文件的函数,Linux系统编程笔记-文件IO
  5. 视频监控方案与多媒体应用系统介绍
  6. 用一段哲理来鞭策自己,希望有个好的开始~
  7. location 拦截所有_AdGuard for Mac (广告拦截器) 使用心得
  8. 机械臂轨迹规划最新论文
  9. 2023 最新大猿人中控充值系统源码 免授权
  10. 变频调速_三相异步电机原理_U/F调速/矢量控制_机械特性_负载特性