前言

  • 类是对对象的抽象,具有共同属性和行为的许多对象抽象出一个类。
  • 例如:有三个学生小明,小红,小李都有姓名,年龄,身高,体重,都会吃,睡,学习等等,我们可以将这些属性和行为抽象出来成为一个类,也就是人类。
  • 假设多个类存在相同属性和行为时,我们同样可以将这些内容抽取到单独的一个类中,那么这多个类没有必要再定义这些属性和行为,只需要继承这个单独的类就好了,这就是继承。
  • 总结:类是对对象的抽象,继承是对某一批类的抽象。

继承的格式:

格式
  • 通过extends关键字可以实现类与类的继承

    • class 子类类名 extends 父类类名 {}
  • 被继承的这个类称为父类,基类或者超类
  • 继承的这个类称为子类或者派生类。
//父类
class Fu{}
//子类
class Zi extends Fu{}

类与类之间有两种格式。

一种是(is a)属于继承;

另一种是(has a)属于组合;

继承的特点:

  1. 通过extends关键字,实现了继承之后,让类与类之间产生了关系。
  2. 继承的本质就是抽取共性代码,多个重复代码的向上抽取,简化代码。
  3. 类是对一批对象的抽象,继承是对一批类的抽象。
  4. 父类又被称为超类,或者基类,子类又被称为派生类。
  5. Java是面向对象语言,万事万物皆是对象,为了满足这个设计原则,所有的类都直接或者间接继承自Object类。

继承的优缺点

优点:
  1. 简化了代码
  2. 提高了扩展性
  3. 提高了可维护性
缺点:

造成了耦合性过高,牵一发动全身

编写Java程序时一般要满足开闭原则。即:对扩展开放,对修改关闭;

高内聚,低耦合: 类与类之间,功能与功能之间,模块与模块之间,功能尽量内聚,不同模块之间,尽量独立。

继承的注意点(重要)

先总结再详解

  1. 单一继承性。(在Java中是不支持多继承的,通俗的说子类只能有一个父类,而父类可以有很多子类。)
  2. 支持多层继承。(继承可以一直传下去,子类有父类,父类又有父类...)
  3. 如果父类成员使用private修饰,那么子类不能被继承。(private只是对本类有效)
  4. 如果一个子类继承了父类的属性和方法还可以有自己特有的属性和方法。(不光有父类的属性(可继承的)和方法(可继承的),也有自己独有的属性和方法。)
  5. 当子类和父类的成员变量重名的时候,子类优先。(就近原则)
class Fu {
String name = "x";
int age = 40;
public Fu(){}
}
class Zi extends Fu {
int age = 10;
public Zi(){}
public void print() {
System.out.println(age);
}
}
结果为10;
  1. 构造方法不能够被继承(构造方法必须要与类名保持一致)。

继承的使用

  1. 一般在写代码的时候发现代码中存在重复代码,需要向上抽取,考虑继承。
  2. 当某个类的设计非常复杂的时候可以考虑继承 例如: 设计一个窗口类

    (继承是一把双刃剑,要慎用!)

以上

Java继承详解的更多相关文章

  1. 「万字图文」史上最姨母级Java继承详解

    摘要:继承是面向对象软件技术中的一个概念.它使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用. 本文分享自华为云社区<「万字图文」史上最姨母级Java继承详解丨[奔跑吧!JAVA] ...

  2. Java 继承详解

    什么是继承? 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 多个类可以称为子类,单独这个类称为父类.超类或者基类. 子类可以直接 ...

  3. “全栈2019”Java第九十九章:局部内部类与继承详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  4. Java内部类详解

    Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就 ...

  5. 黑马----JAVA迭代器详解

    JAVA迭代器详解 1.Interable.Iterator和ListIterator 1)迭代器生成接口Interable,用于生成一个具体迭代器 public interface Iterable ...

  6. [原创]JavaScript继承详解

    原文链接:http://www.cnblogs.com/sanshi/archive/2009/07/08/1519036.html 面向对象与基于对象 几乎每个开发人员都有面向对象语言(比如C++. ...

  7. [转] Java内部类详解

    作者:海子 出处:http://www.cnblogs.com/dolphin0520/ 本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置 ...

  8. Java面向对象详解

    Java面向对象详解 前言:接触项目开发也有很长一段时间了,最近开始萌发出想回过头来写写以前学 过的基础知识的想法.一是原来刚开始学习接触编程,一个人跌跌撞撞摸索着往前走,初学的时候很多东西理解的也懵 ...

  9. java 泛型详解(普通泛型、 通配符、 泛型接口)

    java 泛型详解(普通泛型. 通配符. 泛型接口) JDK1.5 令我们期待很久,可是当他发布的时候却更换版本号为5.0.这说明Java已经有大幅度的变化.本文将讲解JDK5.0支持的新功能---- ...

随机推荐

  1. 企业推动移动化战略中为什么需要Moli?

    随着科技的进步,计算能力程指数上升,引爆人工智能的大发展,人类社会开始步进入智能时代.与此同时,端能力将演进到第三代,全面参与智能边缘计算,从PC互联到移动互联到万物互联,历史在快速演进:主流技术向物 ...

  2. C#如何使SQLite程序集既能适应32位系统也能适应64位系统

    分享5: 需求:都知道Sqlite3是分32位和64位版本的,那如果将一个Sqlite3.dll文件全适用 分析:Sqlite是种轻量级的数据库文件,使用了混合编程而成的,一部分采用非托管的C++代码 ...

  3. dict、defaultdict 和 OrderedDict 比较

    一.dict.defaultdict 和 OrderedDict 常见的方法比较 dict.defaultdict 和 OrderedDict 常见的方法比较   dict defaultdict O ...

  4. LODOP中tfoot和tbody中间线连不起来

    这种情况发生在使用ADD_PRINT_TABLE时,ADD_PRINT_TABLE是Lodop中专门用来输出table表格的语句,它有很多特点,比如该语句不切行(详细可参考查看本博客相关博文:LODO ...

  5. DS博客作业03--栈和队列

    1.本周学习总结 本周学习中学习了栈和队列,栈和队列都属于线性结构,栈和队列不同于线性表的地方在于它们的相关运算具有一些特殊性,所以栈和队列也称为操作受限的线性表. 1.栈 栈是重要且常用的数据结构之 ...

  6. DS博客作业01--日期抽象数据类型设计与实现

    1.思维导图及学习体会 1.1第一章绪论知识点思维导图 1.2 学习体会 这次博客园和大作业是我在编程学习中的有意义的进步,第一次尝试使用vs,并且通过同学的一些网站的推荐,和热心同学的帮忙,简单学会 ...

  7. Ubuntu 16.04 RabbitMq 安装与运行(安装篇)

    Ubuntu 16.04 RabbitMq 安装与运行(安装篇) 2018年08月15日 15:05:24 我跟吴彦祖四六开 阅读数:1966   前言 目前公司用阿里云 + redis 的方式实现的 ...

  8. Apache Flink教程

    1.Apache Flink 教程 http://mp.weixin.qq.com/mp/homepage?__biz=MzIxMTE0ODU5NQ==&hid=5&sn=ff5718 ...

  9. OpenFlow Flow-Mod消息学习

    任务内容 1. 熟悉Flow-Mod消息触发场景. 2. 掌握Flow-Mod消息格式和常用字段含义. 实验原理 OpenFlow 协议支持3种消息类型:Controller-to-Switch(控制 ...

  10. YUI Compressor

    简介 根据雅虎卓越性能团队的说法,40%到60%的雅虎用户拥有空闲缓存体验,所有页面浏览量中约有20%是使用空缓存完成的(请参阅Tenni Theurer在YUIBlog上的这篇文章)有关浏览器缓存使 ...