`
henryyang
  • 浏览: 111793 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
文章分类
社区版块
存档分类
最新评论

Java什么是面向对象和面向对象特性

阅读更多

 找工作,面试官都会问起什么是面向对象。对于这种问题也没有唯一的说法吧。自己感觉
  要结合实际来说吧。以下通过面向对象的概念和面向对象特性来理解什么是面向对象

   面向对象其实是现实世界模型的自然延伸。现实世界中任何实体都可以看作是对象。对象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事 物,任何对象都是某一类事物的实例。如果说传统的面向过程式编程语言是以过程为中心以算法为驱动的话,面向对象的编程语言则是以对象为中心以消息为驱动。 用公式表示,过程式编程语言为:程序=算法+数据;面向对象编程语言为:程序=对象+消息。

所有面向对象编程语言都支持三个概念:封 装、多态性和继承,Java也不例外。现实世界中的对象均有属性和行为,映射到计算机程序上,属性则表示对象的数据,行为表示对象的方法(其作用是处理数 据或同外界交互)。所谓封装,就是用一个自主式框架把对象的数据和方法联在一起形成一个整体。可以说,对象是支持封装的手段,是封装的基本单位。Java 语言的封装性较强,因为Java无全局变量,无主函数,在Java中绝大部分成员是对象,只有简单的数字类型、字符类型和布尔类型除外。而对于这些类 型,Java也提供了相应的对象类型以便与其他对象交互操作。

多态性就是多种表现形式,具体来说,可以用"一个对外接口,多个内在实现 方法"表示。举一个例子,计算机中的堆栈可以存储各种格式的数据,包括整型,浮点或字符。不管存储的是何种数据,堆栈的算法实现是一样的。针对不同的数据 类型,编程人员不必手工选择,只需使用统一接口名,系统可自动选择。运算符重载(operator overload)一直被认为是一种优秀的多态机制体现,但由于考虑到它会使程序变得难以理解,所以Java最后还是把它取消了。

继承 是指一个对象直接使用另一对象的属性和方法。事实上,我们遇到的很多实体都有继承的含义。例如,若把汽车看成一个实体,它可以分成多个子实体,如:卡车、 公共汽车等。这些子实体都具有汽车的特性,因此,汽车是它们的"父亲",而这些子实体则是汽车的"孩子"。Java提供给用户一系列类 (class),Java的类有层次结构,子类可以继承父类的属性和方法。与另外一些面向对象编程语言不同,Java只支持单一继承。

其实在没有面向对象的世界里也有继承,编程语言都支持int直接转换为float,这叫低类型转换为高类型。类是其实一个自定义数据类型,父类是高类型,子类是低类型。


Java面向对象特性
1.继承(Inheritance)
继承是面向对象编程的核心机制之一,其作用是在已有类型基础之上进行扩充或改造,得到新的数据类型,以满足新的需要.
语法格式如下:
[<修饰符>] class <类名> [extends<父类名>]{
[<属性声明>]
[<构造方法声明>]
[<方法声明>]
}

2.类之间的关系
1)依赖关系(Dependency):指一个类的方法中使用到了另一个类的对象,此时我们称前者依赖后者.("use-a")的关系
2)聚合关系(Aggregation):指一个类的对象包含(通过属性引用)了另一个类的对象.("has-a")的关系
3)泛化关系(Generalization):表示的是类之间的继承关系(还包括类与接口之间的实现关系以及接口之间的继承关系).("is-a")关系

3.访问控制(access control)
修饰类一般只有:public,default
修饰属性和方法有:public, protected, default,private

4.方法重写(overwrite)
在子类继承父类时,子类可以重写父类的方法.方法重写必须遵守下面的原则:
1)重写方法必须和被重写方法具有相同的方法名称,参数列表和返回值类型
2)重写方法不能使用比被重写方法更严格的访问权限
3)重写方法不允许声明抛出比被重写方法范围更大的异常类型.(可以不抛出异常,或者只能抛出相同的异常)

5.super关键字
子类继承父类时,在子类中可以使用super来引用父类中的成分.在构造方法中使用super()语句,必须位于子类构造方法的第一行.
格式有:
super.<属性名>:访问父类中的属性
super.<方法名>(<实参列表>):访问父类中的成员方法
super(<实参列表>):在子类构造方法中调用父类的构造方法

6.多态(Polymorphism)
多态:把子类对象可以替代父类对象使用
instanceof运算符:用于检测一个对象的真正类型,格式:
<变量名>instanceof<类型>
JDK5.0允许重写方法时修改其返回值的类型,但必须是父类方法返回值类型的子类或实现类类型.

7.方法重载(overload)
在一个类中存在多个同名方法的情况下,使用方法重载.
this(<实参列表>):只能出现在构造方法中,且this()语句如果出现必须位于方法体中代码的第一行.用来调用同一类中的其他重载构造方法.

8.Java对象构造和初始化
语法规则如下:
1)在子类的构造方法中可使用super语句调用父类的构造方法,格式:super(<实参列表>)
2)如果子类的构造方法中既没有显式地调用父类构造方法,也没有使用this关键字调用同一个类的其他重载构造方法,则系统会默认调用父类无参数的构造方法,格式:super()
3)如果子类构造方法中既未显式调用父类构造方法,而父类中又没有无参的构造方法,则编译出错.
Java对象构造和初始化的处理细节如下:
第一阶段:为新建对象的实例变量分配存储空间并进行默认初始化
第二阶段:按下述步骤继续初始化实例变量
1)绑定构造方法参数;
2)如有this()调用,则调用相应的重载构造方法,然后跳转到步骤5;
3)显式或隐式追溯调用父类的构造方法(Object类除外);
4)进行实例变量的显式初始化操作
5)执行当前构造方法的方法体中其余的语句

9.抽象类(abstract class)
抽象方法(abstract method):只给出方法头(包括方法名,形式参数列表,返回值类型及修饰符),而不必给出方法体,即方法实现的细节.格式如下:
[<修饰符>]abstract <返回值类型> <方法名> ([<参数列表>])
注意:
1)包含抽象方法的类必须声明为抽象类,但不包含任何抽象方法的java类也可以声明为抽象类
2)子类可以不全部实现抽象父类,但子类也必须声明为抽象类
3)父类不是抽象类,子类可以添加抽象方法,成为抽象类
4)抽象类可以声明static属性和方法.

10.接口(interface)
格式:
[<modifier>] class <name> [extends<superclass>] [implements<interface>[,<interface>]*] {
declarations *
}

11.嵌套类(Nested Class)
嵌套类分为:使用static修饰的嵌套类称为静态嵌套类(Static Nested Class),非static的嵌套类称为内部类(Inner Class),内部类可以分为:
1)普通的内部类:在Java类中,方法或语句块的外部定义的非static类
2)局部内部类:也称局部类(Local Class),定义在方法或语句块中的类
3)匿名内部类:也称匿名类(Anonymous Class),定义在方法或语句块中,该类没有名字,只能在其所在之处使用一次.

12.断言(assert)
断言机制允许Java开发者在代码中加入一些检查语句,主要用于程序调试目的.功能:在用户定义的boolean表达式(判定条件)结果为false时抛出一个Error对象,其类型为AssertionError.
语法格式:
assert <boolean 表达式>;
执行到assert语句时,如果其后的boolean类型表达式值为false,则程序将抛出AssertionError.

assert<boolean 表达式>:<表达式2>;
断言失败时,系统会自动将<表达式2>的值传递给新创建的AssertionError对象,进而将其转换为一个消息字符串保存起来.

分享到:
评论

相关推荐

    Java的面向对象特性 PPT

    Java是一种广泛使用的编程语言,以其强大的面向对象特性而闻名。面向对象编程(Object-...本PPT“第三章 Java的面向对象特性”将深入解析这些概念,提供实例和示例代码,帮助你更好地理解和应用Java的面向对象编程。

    Java面向对象程序设计

    本教程涵盖了这一关键概念,旨在帮助学习者深入理解和掌握Java的面向对象特性。以下是相关知识点的详细说明: 1. **面向对象编程基础**:面向对象编程(OOP)是一种编程范式,它基于“对象”的概念,强调数据和操作...

    Java面向对象程序设计课后答案全解

    学习如何创建和使用类及对象,是理解Java面向对象编程的关键。 2. **封装**:封装是面向对象的核心特性之一,它隐藏了对象内部的实现细节,只对外提供公共接口进行交互。通过访问修饰符(public, private, ...

    面向对象实验通过编程和上机实验理解 Java 语言是如何体现面向对象

    同时,通过具体的代码实例,加深对Java语言面向对象特性的理解,从而提升程序设计能力。通过不断地练习和上机操作,我们可以更好地将理论知识转化为实际技能,为今后的Java开发工作奠定坚实基础。

    面向对象编程C++和Java比较教程

    C++与Java在面向对象特性上的比较: 1. 封装:两者都支持封装,即隐藏对象的内部实现细节,通过公有接口暴露必要的功能。C++通过访问修饰符(public, private, protected)来控制成员的可见性,而Java则有类似的机制...

    Java面向对象应用程序开发

    Java面向对象应用程序开发是软件开发领域中的核心主题,尤其对于初学者和专业开发者而言,理解并掌握这一技术至关重要。Java语言以其强大的面向对象特性、跨平台兼容性以及丰富的类库,成为了开发各种类型应用程序的...

    java课件面向对象

    在Java面向对象编程中,理解抽象、封装和类的设计是构建清晰、可维护和可扩展程序的基础。本文将详细探讨这些概念以及它们在Java语言中的实现。 首先,抽象是从具体的实例中提炼出共性,形成一般化概念的过程。在...

    java面向对象课程设计(有程序和报告)

    Java面向对象课程设计是计算机科学领域中一个重要的实践环节,旨在帮助学生深入理解面向对象编程的概念和技巧。在这个课程设计中,学生通常会被要求完成一个实际的项目,使用Java语言来实现,同时需要提交详细的报告...

    Java面向对象编程:从C++到Java—理解面向对象

    ### Java面向对象编程:从C++到Java的理解与过渡 #### 一、Java与C/C++的区别 在从C++转向Java的过程中,理解和掌握面向对象编程(OOP)是非常重要的。本篇文章将着重介绍Java与C/C++之间的主要差异,并探讨Java如何...

    面向对象编程(Java).pdf

    Java是一种广泛使用的面向对象编程语言,它封装了数据和操作数据的行为,并支持继承和多态特性,使得Java程序可以高度模块化和复用。在Java中,面向对象编程(OOP)的三大基本特性是封装、继承和多态。 封装是面向...

    java面向对象小程序

    在这个“java面向对象小程序”中,我们可以深入探讨Java语言的核心概念——面向对象编程(Object-Oriented Programming,简称OOP)。面向对象编程是一种编程范式,它基于“对象”概念,通过封装、继承和多态等特性来...

    Java语言的面向对象特性

    总之,Java的面向对象特性使得程序员能够以更加接近自然的方式来思考和构建软件,通过类和对象的组织,实现高度模块化的代码结构,提高代码的可读性、可维护性和复用性。封装、继承和多态性是面向对象编程的三大支柱...

    Java面向对象五子棋

    Java面向对象编程是一种重要的软件开发方法,它基于“对象”的概念,强调数据和操作数据的方法紧密结合,使得代码更易于理解和维护。在这个名为“Java面向对象五子棋”的项目中,我们有两个使用Java实现的五子棋小...

    面向对象编程C++和Java比较教程 中英文完整版 pdf

    在面向对象特性上,C++和Java都提供了封装、继承和多态。然而,C++的多态主要通过虚函数和模板实现,而Java则依赖于接口和抽象类。C++的模板允许泛型编程,可以在编译时生成针对不同类型的代码,而Java的泛型是在...

    java面向对象的设计方法

    Java作为一种强大的面向对象编程语言,深入理解和掌握面向对象的设计方法对于任何Java开发者来说都是至关重要的。在Java中,面向对象主要体现在类、对象、封装、继承、多态这五个核心概念上。 首先,类是面向对象的...

    《Java面向对象程序设计(第2版)》课件

    Java面向对象程序设计是计算机科学中的一个重要领域,尤其在软件开发中占据核心地位。第二版的《Java面向对象程序设计》课件旨在深入浅出地介绍这一关键概念,帮助学习者掌握Java语言的基础以及面向对象编程的核心...

    Java面向对象程序设计耿祥义版课件

    耿祥义版的课程着重讲解了这一主题,通过PPT和源码的形式,旨在帮助学习者深入理解并掌握Java的面向对象特性。下面将详细阐述Java面向对象编程的基本概念、主要特点以及其在实际开发中的应用。 一、面向对象编程...

    ACCP5.0S2教程\使用Java实现面向对象编程(Java OOP)\使用Java实现面向对象编程(Java OOP)上机贯穿案例源码

    面向对象编程(Object-Oriented Programming,简称OOP)是一种重要的编程范式,它基于“对象”的概念,通过封装、继承和多态等核心特性,实现了代码的复用和模块化,提高了软件开发的效率和可维护性。在Java语言中,...

Global site tag (gtag.js) - Google Analytics