前言

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

继承的格式:

格式
  • 通过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. pycharm 远程调试代码

    我们在本地开发的时候,有时候需要使用到远程服务器的环境,如我们在调试微信或支付宝支付的时候. 那我们如何通过本地pycharm环境连接远程服务器进行调试呢? 1.pycharm和远程服务器连接 1)点 ...

  2. Eclipse中快捷键Ctrl + Alt + 向上箭头 或者 Ctrl + Alt + 向下箭头与Windows冲突

    原文地址:https://blog.csdn.net/buaaroid/article/details/50804608 clipse中按ctrl + alt + 向上箭头没有任何反应,按ctrl + ...

  3. JS 设计模式七 -- 外观模式

    概念 为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使子系统更加容易使用. 外观模式在JS中,可以认为是一组函数的集合. 实现 // 三个处理函数 function start() ...

  4. vue动态设置初始页

  5. flutter 自定义主题切换

    1. 定义local_srorage.dart文件 使用Flutter第三方插件shared_preferences实现存储键值对信息 相关shared_preferences插件可参考: flutt ...

  6. redis session 共享 测试案列

    下载 spring redis session demo 2.分别在不同的服务器上启动 3.nginx 安装 测试

  7. Maven版本不一致的时候,使用指定版本进行编译

    最近用Maven打包项目(本地jdk11)后放到服务器(jdk8)后,报[java.lang.UnsupportedClassVersionError]版本不一致错误. 网上资料说是修改Intelli ...

  8. Hadoop系列(二):Hadoop单节点部署

    环境:CentOS 7 JDK: 1.7.0_80 hadoop:2.8.5 hadoop(192.168.56.101) 配置基础环境 1. 测试环境可以直接关闭selinux和防火墙 2. 主机添 ...

  9. Django 对接 支付宝支付, 回调

    平台 点击这里进入 蚂蚁金服开放平台 沙箱 点击这里进入 沙箱环境 初始界面 设置公钥 下载创建秘钥工具 1.  进入文档中心 这里 2. 选中 电脑网站支付 3. 进入后选中 API 列表 中的 统 ...

  10. 超越村后端开发(4:API开发)

    1.users相关的api开发 1.在settings中添加APPID,SECRET 2.在apps/users/views.py内: from chaoyuecun.settings import ...