`
zjf201172653
  • 浏览: 45213 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Java中的继承、封装、多态、抽象

阅读更多

                             Java中的继承、封装、多态、抽象

 

1.继承

        java 和某些面向对象语言(如 c++)在实现继承的不同之处在于java只支持单继承,不支持多重继承。即java 中一个类只能继承于另一个类。我们将被继承的类称之为父类(基类),继承类称之为子类(派生类)。在java 中用关键字extends 来实现单继承。实现继承关系的类之间有着必然的联系,不能将不相关的类实现继承,就象人类不能继承于鸟类!
       那怎么去判断类和类之间是否有着必然联系呢?实际上,前面我们已知当某类A和类 B之间有着共同的属性和行为时,那么类A 和类 B之间就可能是继承关系或者有着共同的父类。继承带来了三个好处:减少代码冗余;维护变得简单;扩展变得容易。构造方法不能被继承!一个类得到构造构造方 法只有两种途径:自定义构造方法;使用JVM分配的缺省构造方法。但是,可以在子类中可以通过super关键字访问父类的构造方法。 

继承:好比如你继承你老爸的事业,等于你有了你老爸一样的东西。
     在程序里,以class A是爸,class B extends A代表B继承A,B也就有了A的一切,即属性与方法。
     但不能拥有你爸爸的秘密的东西,比如他的日记,也就是不能继承私有属性与方法。

2.多态

       运行时多态性是面向对象程序设计代码重用的一个最强大机制,Java多态性的概念也可以被说成“一个接口,多个方法”。Java实现运行时多态性的基础是动态方法调度,它是一种在运行时而不是在编译期调用重载方法的机制。

       方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种 表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方 法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。方法的重写Overriding和重载Overloading是Java多态性的不同表现。

多态性:发送消息给某个对象,让该对象自行决定响应何种行为。 
        通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用

3.抽象

       所有编程语言的最终目的都是提供一种“抽象”方法。

       汇编语言是对基础机器的少量抽象。后来的许多“命令式”语言(如FORTRAN,BASIC 和C)是对汇编语言的一种抽象。与汇编语言相比,这些语言已有了长足的进步,但它们的抽象原理依然要求我们着重考虑计算机的结构,而非考虑问题本身的结构。在机器模型(位于“方案空间”)与实际解决的问题模型(位于“问题空间”)之间,程序员必须建立起一种联系。这个过程要求人们付出较大的精力,而且由于它脱离了编程语言本身的范围,造成程序代码很难编写,而且要花较大的代价进行维护。为机器建模的另一个方法是为要解决的问题制作模型。对一些早期语言来说,如LISP 和APL,它们的做法是“从不同的角度观察世界”——“所有问题都归纳为列表”或“所有问题都归纳为算法”。PROLOG 则将所有问题都归纳为决策链。对于这些语言,我们认为它们一部分是面向基于“强制”的编程,另一部分则是专为处理图形符号设计的。每种方法都有自己特殊的用途,适合解决某一类的问题。但只要超出了它们力所能及的范围,就会显得非常笨拙。

       面向对象的程序设计在此基础上则跨出了一大步,程序员可利用一些工具表达问题空间内的元素。由于这种表达非常普遍,所以不必受限于特定类型的问题。我们将问题空间中的元素以及它们在方案空间的表示物称作“对象”(Object)。当然,还有一些在问题空间没有对应体的其他对象。通过添加新的对象类型,程序可进行灵活的调整,以便与特定的问题配合。所以在阅读方案的描述代码时,会读到对问题进行表达的话
语。与我们以前见过的相比,这无疑是一种更加灵活、更加强大的语言抽象方法。总之,OOP 允许我们根据问题来描述问题,而不是根据方案。然而,仍有一个联系途径回到计算机。每个对象都类似一台小计算机;它们有自己的状态,而且可要求它们进行特定的操作。与现实世界的“对象”或者“物体”相比,编程“对象”与它们也存在共通的地方:它们都有自己的特征和行为。

4.封装

    封装是JAVA面向对象的特点的表现,封装是一种信息隐蔽技术它有两个含义,即把对象的全部属性和
全部服务结合在一起,形成一个不可分割的独立单位,以及尽可能隐藏对象的内部结构,也就是说,如果
我们使用了封装技术的话,别人就只能用我们做出来的东西而看不见我们做的这个东西的内部结构了。
    封装:就是遥控车一样,你有个遥控,就能控制车子,但你是看不到遥控的电路设计的,因为你不必
要知道,为什么要封闭,就怕你乱接电路,让遥控用不了。
    程序里,在属性和方法前面加上private关键字,就表示封闭属性和方法了,只能类的内部访问。
    在java中是通过各种访问限定符来实现数据封装的,共分为四种访问级别(由高到低):
private(私有)、friendly(缺省)、protected(受保护)、public(公共)。注意:以上四种访问修饰符可以
作用于任何变量和方法,类只可以定义为默认或公共级别(嵌套类除外)。 
public(公共) 
当变量或方法被public修饰时,该变量和方法可以在任何地方(指的是任何包中)的任何类中被访问;
protected(受保护的) 
当类的变量或方法被 protected 修饰时,该变量和方法只可以在同包中的任何类、不同包中的任何当前
类的子类中所访问。即不同包中的任何不是该类的子类不可访问级别为protected的变量和方法。 
friendly(缺省的) 
当类的变量和方法没有显式地被任何访问区分符修饰时,该变量和方法的访问级别是缺省的。缺省的变量
和方法只能在同包的类中访问。 
private(私有的) 
被 private 所修饰的所有变量和方法只能在所属类中被访问。即类的私有成员和变量只能在当前类中被
访问。
1
2
分享到:
评论
1 楼 闫老三 2013-08-08  
收藏一下~

相关推荐

    Java实验报告——类的继承、多态的应用

    1、实验名称:类的继承、多态的应用 2、代码内容:学生管理类 3、【实验目的】 (1)进一步熟悉抽象类和抽象方法的定义 (2) 进一步掌握集成和多态的实现方式。

    《java面向对象程序设计-继承和多态》教案.doc

    3-3 演示:示例 7 接口 接口就是某个事物对外提供的一些功能的申明 可以利用接口实现多态,同时接口也弥补了Java单一继承的弱点 使用interface关键字定义接口 一般使用接口声明方法或常量,接口中的方法只能是声明,...

    封装,继承,多态,抽象,接口【Java一周入门教程6】

    封装,继承,多态,抽象,接口【Java一周入门教程6】

    详解java封装继承多态

    主要介绍了java封装继承多态,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    学习笔记:抽象封装、继承、多态.doc

    本文档记录了类与类的、抽象封装、继承、多态几种表现形式,通过实际开发,加上自已的理解总结了这几种表现形式。。对开刚学习java的朋友们非常有用,还加上的例子,比较易懂。。。欢迎大家下载哦。。

    Java经典面试题(答案解析)

    封装,继承,多态和抽象 1、 封装 封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改变它内部的数据。在 Java 当中,有 3 种修饰符: public, private 和 protected。每一种修饰...

    微服务系列第九季-Java中的封装、抽象类、接口和多态

    微服务应用是分布式开发的...第九季主要是给大家介绍一下:Java中封装的概念及步骤、Java封装类、Java抽象类的概念、继承抽象类、抽象方法、接口的概念、接口的声明与实现、接口的继承、多态的概念、多态的应用举例。

    Java多态的内存机制

     1:java面向对象特征:抽象,封装,继承,多态。  抽象:  封装:  继承:  多态:  写一个类,来完成以上所包含的抽象,封装,继承内容   class LaoYin extends Thread implements ...

    D11接口,多态.zip_d11接口_java接口_mannerglc_多态

    接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象...Java中多态的代码体现在一个子类对象(实现类对象)既可以给这个子类(实现类对象)引用变量赋值,又可以给这个子类(实现类对象)的父类(接口)变量赋值。

    Java工程师面试复习指南

    继承封装多态的实现原理 集合类 Java集合类总结 Java集合详解:一文读懂ArrayList,Vector与Stack使用方法和实现原理 Java集合详解:Queue和LinkedList Java集合详解:迭代器,快速失败机制与比较器 Java集合详解:...

    Java 面试问题Java 面试问题示例

    4. 解释一下Java中的封装,继承和多态。 5. 解释什么是Java的异常处理?如何使用它? 6. 描述一下Java中的泛型。你如何在你的代码中使用它? 7. 解释一下Java中的接口和抽象类。它们在什么时候使用? 8. 解释一下...

    纯Java语言编写的聊天室 跟QQ很像

    充分的体现Java的抽象 继承 多态和封装 集合Map用的最多功能做的也不错,有截图 抖动 QQ群用户列表和信息提示。很好很好理解JAVA的面向对象的特征

    java核心基础汇总.docx

    语言特性:Java是一种面向对象的编程语言,支持封装、继承和多态等特性。同时,Java也是一种静态类型语言,需要在编译时指定变量的类型。 数据类型:Java中有基本数据类型和引用数据类型。基本数据类型包括int、long...

    java面试常见问题.docx

    请解释Java中的封装、继承和多态的概念是什么? Java中的访问修饰符有哪几种?它们的区别是什么? 请解释Java中的抽象类和接口的概念及区别是什么? 请解释Java中的泛型(Generic)是什么?它有什么作用? Java中的...

    java面试常用知识点.docx

    面向对象:封装、继承、多态 Java基础:变量、数据类型、运算符、条件语句、循环语句、数组、集合、异常处理等 面向对象:类、继承、多态、包、接口、抽象类、泛型等 异常处理:try-catch-finally、异常分类及处理、...

    src.zip Java的面向对象编程·讲解代码

    他们应该对Java类、对象、继承、封装、多态等OOP概念有基本的理解。 使用场景: 这段代码源码资源可以广泛应用于各种Java项目中,尤其是需要展示并教学Java面向对象编程的课程或培训中。它可以被用作教学示例,帮助...

    《Java开发宝典[精品]》陈丹丹 李银龙.epub

    其中,第一部分为开发技术,主要包括如何学好编程、Java语言概述、主流开发工具、Java语言基础、流程控制、Java数组、字符串、面向对象编程基础、继承、封装和多态、抽象类与接口、Java的类中类、包装类、数字类、...

    java100题面试题资料.zip

    封装,继承,多态和抽象 1、 封装 封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改变它内部的数据。在 Java 当中,有 3 种修饰符: public, private 和 protected。每一种修饰...

    【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识

    继承、封装、多态的实现原理 容器 Java集合类总结 Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理 Java集合详解2:Queue和LinkedList Java集合详解3:Iterator,fail-fast机制与比较器 Java集合...

    超级全面的Java面试题集及参考答案

    封装,继承,多态.这个应该是人人皆知.有时候也会加上抽象. 多态的好处 允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用).主要有以下优点: 可...

Global site tag (gtag.js) - Google Analytics