继承是面向对象编程技术的一块基石,因为它允许创建分等级层次的类。运用继承,你能够创建一个通用类,它定义了一系列相关项目的一般特性。该类可以被更具体的类继承,每个具体的类都增加一些自己特有的东西。

在Java术语学中,被继承的类叫超类(superclass),继承超类的类叫子类(subclass)。

因此,子类是超类的一个专门用途的版本,它继承了超类定义的所有实例变量和方法,并且为它自己增添了独特的元素。

继承的基础
继承一个类,只要用extends关键字把一个类的定义合并到另一个中就可以了。为了理解怎样继承,让我们从简短的程序开始。下面的例子创建了一个超类A和一个名为B的子类。注意怎样用关键字extends来创建A的一个子类。

// A simple example of inheritance.
// Create a superclass.
class A { int i, j; void showij() { System.out.println("i and j: " + i + " " + j); }
}
// Create a subclass by extending class A.
class B extends A { int k; void showk() { System.out.println("k: " + k); } void sum() {
System.out.println("i+j+k: " + (i+j+k)); }
}
class SimpleInheritance { public static void main(String args[]) { A superOb = new A(); B subOb = new B(); // The superclass may be used by itself. superOb.i = 10; superOb.j = 20; System.out.println("Contents of superOb: "); superOb.showij(); System.out.println(); /* The subclass has access to all public members of its superclass. */ subOb.i = 7; subOb.j = 8; subOb.k = 9; System.out.println("Contents of subOb: "); subOb.showij(); subOb.showk(); System.out.println(); System.out.println("Sum of i, j and k in subOb:"); subOb.sum(); }
}

该程序的输出如下:

Contents of superOb:
i and j: 10 20
Contents of subOb:
i and j: 7 8
k: 9
Sum of i, j and k in subOb:
i+j+k: 24

像你所看到的,子类B包括它的超类A中的所有成员。这是为什么subOb可以获取i和j以及调用showij( )方法的原因。同样,sum( )内部,i和j可以被直接引用,就像它们是B的一部分。

尽管A是B的超类,它也是一个完全独立的类。作为一个子类的超类并不意味着超类不能被自己使用。而且,一个子类可以是另一个类的超类。

声明一个继承超类的类的通常形式如下:

class subclass-name extends superclass-name { // body of class
}

你只能给你所创建的每个子类定义一个超类。Java不支持多超类的继承(这与C++不同,在C++中,你可以继承多个基础类)。你可以按照规定创建一个继承的层次。该层次中,一个子类成为另一个子类的超类。然而,没有类可以成为它自己的超类。

开课吧:继承是什么?继承的基础有什么?相关推荐

  1. C++基础14-类和对象之多继承与虚继承

    多继承:一个类有多个直接基类的继承关系称为多继承 总结: 1.一般将具有菱形样式继承方式的某些类声明为虚继承 3.虚继承的主要目的是为了防止二义性 2.虚继承就是在继承方式前加virtual 如果一个 ...

  2. 类与面向对象的精华:继承【C++继承】

    引入继承 为什么需要继承? 简单举例 继承 定义 定性 is-a 而不是 has-a is-a has-a 语法 继承方式 继承方式影响了什么? 公有继承 public 私有继承 private 保护 ...

  3. C++虚继承(八) --- 虚继承与继承的差异

    前面一篇文章,说明了在C++ 虚继承对基类构造函数调用顺序的影响.经过仔细推敲,发现没有彻底说清楚虚继承与普通继承之间的关系.所以用下面的文字再说明一下. 首先,重复一下虚拟继承与普通继承的区别有: ...

  4. C++ 面向对象(一)继承:继承、对象切割、菱形继承、虚继承、继承与组合

    目录 继承 继承的概念 继承方式 基类与派生类的赋值转换 作用域与隐藏 派生类的默认成员函数 友元与静态成员 友元 静态成员 多继承 菱形继承 虚继承 继承和组合 什么是组合 如何选择组合和继承 继承 ...

  5. Java继承概述以及Java继承案例和继承的好处

    Java继承概述 1.多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些相同属性和行为,只要继承那个类即可. 2.在Java中通过extends关键字可以实现类与类的 ...

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

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

  7. ejb java_EJB继承与Java继承不同

    ejb java 尽管EJB继承有时使用Java继承,但事实并非总是如此. 就像您在我以前的文章中可以读到的那样 ,EJB不必实现任何接口即可公开业务接口. 反之亦然-仅仅是因为EJB实现了某个接口或 ...

  8. c++中的继承--1(引出,继承方式,继承的对象模型)

    继承的引出 概念: 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特 性的基础上进行扩展,增加功能,这样产生新的类,称派生类.继承呈现了面向 ...

  9. C++ 继承 | 对象切割、菱形继承、虚继承、对象组合

    文章目录 继承 继承的概念 继承方式及权限 using改变成员的访问权限 基类与派生类的赋值转换 回避虚函数机制 派生类的默认成员函数 友元与静态成员 多继承 菱形继承 虚继承 组合 继承 继承的概念 ...

  10. python 类继承方法_python类的继承、多继承及其常用魔术方法

    继承 一个类可以派生出一个子类,这个子类可以使用父类的属性及方法,也可以在父类的基础上添加自己的独特属性或方法.属性和方法的继承的顺序是先从自己开始,找不到再去找父类,父类没有再找父类的父类,其尽头就 ...

最新文章

  1. c++ 进程快照_如何在 Linux 中找出内存消耗最大的进程
  2. 关于 MongoDB 与 SQL Server 通过本身自带工具实现数据快速迁移 及 注意事项 的探究...
  3. javascript 构造函数类和原型 prototyp e定义的属性和方法的区别
  4. python难学嘛-终于明白0基础学python难吗
  5. Maven-学习笔记03【基础-Maven标准目录结构和常用命令】
  6. 利用RTMP或RTSP实现跨平台一对一互动功能
  7. 连接查询 左连接 右连接 内连接 1112 sqlserver
  8. Chaos网络库(三)- 主循环及异步消息的实现
  9. Windows7快捷键大全
  10. 前端开发面试题-JavaScript(一)
  11. Word 多级标题中的某一级的编号变为竖线
  12. dbgView的使用
  13. 免费公共DNS服务器大全
  14. 肖飒:币圈新“口袋罪”?
  15. SAP B1安装教程
  16. win7cmd闪退_Win7运行bat批处理闪退怎么解决
  17. 数字转换成大写人民币
  18. windows设置自启动服务使用winsw
  19. 读取多个文件fgets并输出,每输出2行加一空行,static局部变量
  20. 奥鹏教师计算机培训总结,学校教师信息技术应用能力提升工程2.0项目研修总结...

热门文章

  1. 固定日期时间倒计时,倒计时不可点击,普通倒计时
  2. 孙子兵法吃鸡之地形篇
  3. Spring boot 学习二:入门
  4. JavaScript错误和异常
  5. 解决filezilla中无法显示中文的文件名
  6. 2015 圣诞 限免软件分享
  7. spingMVC问题小结
  8. 基于WF的意见征集6(浅析)
  9. PyTorch 入坑八:卷积与转置卷积
  10. stl变易算法(二)