前言

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

继承的格式:

格式
  • 通过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. 类Objects

    Object类是什么? 在JDK7添加了一个Objects工具类,它提供了一些方法来操作对象,它由一些静态的实用方法组成,这些方法是null-save(空指针安全的)或null-tolerant(容忍 ...

  2. Python百题计划

    一.基础篇 想要像类似执行shell脚本一样执行Python脚本,需要在py文件开头加上什么?KEY:#!/usr/bin/env python Python解释器在加载 .py 文件中的代码时,会对 ...

  3. DAY29、元类

    一.eval内置函数eval内置函数的使用场景: 1.执行字符串会得到相应的执行结果 2.一般用于类型转换,得到dict.list.tuple例: dic_str = ''{'a':1,'b':2}' ...

  4. 高斯消元与行列式求值 part1

    两道模板题,思路与算法却是相当经典. 先说最开始做的行列式求值,题目大致为给一个10*10的行列式,求其值 具体思路(一开始看到题我的思路): 1.暴算,把每种可能组合试一遍,求逆序数,做相应加减运算 ...

  5. java网页爬数据获取class中的空格

    <ul class=""> <li class="avatar_img"><img src="http://avatar ...

  6. HDU1754-ZKW线段树

    单点更新,区间最值 HDU 1754 // // Created by helica on 2018/3/18. // //zkw线段树 单点修改 区间求最值 //HDU 1754 #include ...

  7. pip模块

    pip模块 Usage: pip <command> [options] Commands: install Install packages. download Download pac ...

  8. 老年OIer的Python实践记—— Codeforces Round #555 (Div. 3) solution

    对没错下面的代码全部是python 3(除了E的那个multiset) 题目链接:https://codeforces.com/contest/1157 A. Reachable Numbers 按位 ...

  9. 自定义的AdBlock过滤规则

    自定义的AdBlock过滤规则 # 屏蔽百度首页的广告流 www.baidu.com##DIV[id="u1"] www.baidu.com##DIV[id="qrcod ...

  10. js中字符串可以调用的方法

    var s = "hello,world"   //定义一个字符串 s.length()                   // => 11 s.charAt(0)     ...