继承可以被定义为其中一个对象获取的另一个特征的过程。使用继承的信息是在一个等级秩序作出管理。

当我们谈到继承,最常用的关键字是extends和implements。这些话会确定一个对象是否IS-A类型的另一个。通过使用这些关键字,我们可以使一个对象获得另一个对象的属性。

IS-A 关系:

IS-A(是一个)是一种表达:这个对象是一个类型的对象。让我们来看看如何使用extends关键字来实现继承。

public class Animal{
}public class Mammal extends Animal{
}public class Reptile extends Animal{
}public class Dog extends Mammal{
}

现在,根据上面的例子中,在面向对象的术语中,满足下列条件:

  • 动物是哺乳动物类的超类。

  • 动物是爬虫类的超类。

  • 哺乳动物和爬行动物是动物类的子类。

  • 狗是哺乳动物双方和动物类的子类。

现在,如果我们考虑了IS-A关系,我们可以说:

  • 哺乳动物IS-A 动物

  • 爬行动物IS-A的动物

  • 狗IS-A哺乳动物

  • 因此:狗IS-A动物

使用extends关键字的子类就可以,除了超类的私有属性外,它继承超类的所有属性。

我们可以保证,哺乳动物实际上是与使用实例操作符的动物。

例子:

public class Dog extends Mammal{public static void main(String args[]){Animal a = new Animal();Mammal m = new Mammal();Dog d = new Dog();System.out.println(m instanceof Animal);System.out.println(d instanceof Mammal);System.out.println(d instanceof Animal);}
}

这将产生以下结果:

true
true
true

既然extends关键字让我们研究如何使用implements关键字来获得对IS-A关系有很好的理解。

implements关键字被使用的类从接口继承。接口永远不能凭借它的类进行扩展。

例子:

public interface Animal {}public class Mammal implements Animal{
}public class Dog extends Mammal{
}

instanceof 关键字:

用instanceof操作符检查确定哺乳动物是否实际上是一个动物,而狗实际上是一种动物

interface Animal{}class Mammal implements Animal{}public class Dog extends Mammal{public static void main(String args[]){Mammal m = new Mammal();Dog d = new Dog();System.out.println(m instanceof Animal);System.out.println(d instanceof Mammal);System.out.println(d instanceof Animal);}
} 

这将产生以下结果:

true
true
true

HAS-A 关系:

这些关系主要是基于使用。这就决定了某一类是否 HAS-A 某一个东西。这种关系有助于​​减少重复代码,以及错误。

让我们研究一个例子:

public class Vehicle{}
public class Speed{}
public class Van extends Vehicle{private Speed sp;
} 

这表明,Van类 HAS-A Speed类。通过让飞车一个单独的类,我们不必把属于加速Van 类中的全部代码。这使得它可以重复使用Speed类在多个应用程序。

在面向对象的功能,用户无需理会哪个对象是做实际工作。要做到这一点,Van类隐藏用户的执行细节。所以基本上会发生什么是用户会问Van类来执行某些动作,Van类要么本身做的工作或要求另一个类执行的操作。

要记住的一个非常重要的事实是,Java只支持单一继承。这意味着,一个类不能扩展多个类。因此,以下是非法的:

public class extends Animal, Mammal{} 

因此,一个类可以实现一个或多个接口。这使得Java要摆脱多重继承是不可能的。

java高级教程之Java继承相关推荐

  1. JAVA基础教程之Java发展史

    java起源: 1991 年 , 由 Patrick Naughton 和 James Gosling ( 一个全能的计算机奇才 ) 带领的 Sun 公司的工程师小组想要设计一种小型的计算机语言,主要 ...

  2. Java基础教程之Java简介

    一. Java到底是什么? Java是一门全球范围内使用最广泛的,面向对象的编程语言.Java语言具有功能强大和简单易用两个特征,它作为面向对象编程语言系列的代表,极好地实现了面向对象理论,允许程序员 ...

  3. Java基础教程之Java的变量

    变量亦称"变数",是反映事物运动变化状态的量.人们在实践活动中,为了从量的方面研究事物运动.变化的规律性,或者事物之间的数量关系,必须舍弃事物的具体内容,而从事物的量的规律性中抽象 ...

  4. iText7高级教程之html2pdf——7.关于pdfHTML经常问的问题

      本章是一些问题的总结,iText官网罗列了常见的一些问题,让我们能更加了解pdfTML.一下是原文和链接,在这会一一翻译: Over the years, we've received many ...

  5. iText7高级教程之html2pdf——6.在pdfHTML中使用字体

    作者:CuteXiaoKe 微信公众号:CuteXiaoKe   到目前为止,我们还没有花太多的精力来研究将HTML转换为PDF时使用的字体.我们知道Helvetica是iText在没有指定字体时使用 ...

  6. Java高级篇——深入浅出Java类加载机制

    转载自 Java高级篇--深入浅出Java类加载机制 类加载器 简单讲,类加载器ClassLoader的功能就是负责将class文件加载到jvm内存. 类加载器分类 从虚拟机层面讲分为两大类型的类加载 ...

  7. web程序前后台功能实现_好程序员web前端教程之JS继承实现方式解析

    好程序员web前端教程之JS继承实现方式解析,JS是Web前端三要素之一,也是每一个初学前端的同学遭遇的第一条拦路虎.很多人反应JS学习不易,各类知识点概念及应用常常让人抓耳挠腮.在接下来的北京Web ...

  8. iText7高级教程之html2pdf——1.从Hello HTML开始

    作者:CuteXiaoKe 微信公众号:CuteXiaoKe   在本章,我们通过不同的方法把一个简单的HTML文件转换为PDF文件.HTML文件的内容包含一个"TEST"标题,一 ...

  9. java的继承实例_java教程之java继承示例详解

    这篇文章主要介绍了java继承示例详解,需要的朋友可以参考下 什么是继承(extends)? 继承是:新定义的类是从已有的类中获取属性和方法的现象. 这个已有的类叫做父类, 从这个父类获取属性和方法的 ...

最新文章

  1. SAP PP 为工单确认时自动做收货的设置
  2. android sdk 源码解析
  3. 开始---《C++ primer》随笔
  4. java.lang.OutOfMemoryError: GC overhead limit exceeded
  5. mysql 触发器 for each row 理解_“for each row”如何在mysql中的触发器中工作?
  6. python中字符串注意事项
  7. AWS 人工智能黑客马拉松正式开启!用实力演绎科技向善!
  8. 简约商业计划书PPT模板
  9. h桥控制电机刹车_一种电机H桥制动电路的制作方法
  10. 视频与音频码率计算公式
  11. java 模块层次结构图_Spring框架模块结构图解析
  12. java applet介绍,applet java 介绍
  13. 想撩产品小姐姐?你必须学会的这篇产品经理必读文章,如何构建电商产品认知体系?
  14. 抖音康辉机器人_新闻联播主持康辉玩抖音,卖萌耍宝样样精通,观众为其点赞...
  15. 问题与解决_IDEA-> Project Structure -> Artifacts-> ‘项目名‘ module: ‘Web‘ facet resources 显示红色
  16. (附代码)基于Python对交通路口的红绿灯进行颜色检测
  17. 单片机实例3——多路开关状态指示(硬件电路图+汇编程序+C语言程序)
  18. PAT 甲级 A1010
  19. 基于Pytorch的猫狗分类
  20. 古代一两银子值现在多少钱?

热门文章

  1. Kotlin入门-万物皆对象,基础类型
  2. pandas中min()函数的应用
  3. Github Pages+Gridea搭建个人博客
  4. react 生命周期
  5. aircrack和reaver破解路由器PIN码
  6. Disconf安装简要
  7. ios 访问版本信息 { resultCount:0, results: [] }
  8. Owl Eyes: Spotting UI Display Issues via Visual Understanding
  9. Android Studio导入项目app module一直不显示
  10. 如何运行.ipynb文件