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

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

所有面向对象编程语言都支持三个概念:封 装、多态性和继承,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什么是面向对象和面向对象特性相关推荐

  1. Java学习笔记二十五:Java面向对象的三大特性之多态

    Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...

  2. Java第四次作业——面向对象高级特性(继承和多态)

    Java第四次作业--面向对象高级特性(继承和多态) (一)学习总结 1.学习使用思维导图对Java面向对象编程的知识点(封装.继承和多态)进行总结. 2.阅读下面程序,分析是否能编译通过?如果不能, ...

  3. 到底什么是面向对象,面试中怎么回答。面向过程和面向对象的区别是什么。java跨平台特性以及java和C++的区别。面向对象的三大特性——封装、继承和多态。面向对象的高拓展性以及低耦合度怎么体现?

    Java语言具有的特点:面向对象.跨平台.多线程以及网络编程 1. 和C++的区别 1.1 Java隐蔽了C++的指针,避免指针直接操作,程序更加安全. 1.2 Java类继承只能单继承,避免了C++ ...

  4. java面向对象特性_java面向对象编程三大特性

    一说到java面向对象编程就想到面向对象的三大特性,封装,继承和多态,下面我们来具体分析以下这三大特性在编程中是如何具体体现的. 封装 将类的属性和具体实现细节隐藏,只提供相关的接口和方法来对隐藏信息 ...

  5. java面向对象三大特性难吗_JAVA面向对象的三大特性

    JAVA面向对象的三大特性 每一对象是其状态和行为的封装.类是按一定体系和层次安排的,使得子类可以从超类继承行为.在这个类层次体系中有一个根类,它是具有一般行为的类.Java程序是用类来组织的.下面是 ...

  6. java面向对象:三大特性:封装,继承,多态

    -----------------------------------面向对象:三大特性:封装,继承,多态 ----------------------------------- 1.什么是类?什么是 ...

  7. Day55-每日一道Java面试题-Java 面向对象编程三大特性: 封装 继承 多态

    Java 面向对象编程三大特性: 封装 继承 多态 封装 封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问.但是如果一个类没有 ...

  8. 【java】面向对象(三大特性)

    一.面向对象思想 面向对象思想:一切皆对象. 不同角度看同一个事物得到的结果是不一样的,对于"火"来说,化学家看到的是组成.燃烧的元素,物理学家看到的是其温度.焰心等物理特性,画图 ...

  9. Java初学者入门经典:面向对象的思维方法(其实同样非常适合C#的初学者)……非原创,作者忘了,非常抱歉...

    我是从学习Java编程开始接触OOP(面向对象编程),刚开始使用Java编写程序的时候感觉很别扭,因为我早以习惯用C来编写程序,很欣赏C的简洁性和高效性,喜欢C简练而表达能力丰富的风格,特别忍受不了J ...

  10. 面向对象之三大特性:继承,封装,多态

    python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情况具体分 ...

最新文章

  1. 搭建Jasig CAS中央认证服务实现单点登录——搭建Tomcat并实现SSL安全连接
  2. c语言马秀丽,C语言程序计 清华大学出版社 马秀丽 刘志妩科后习题9答.doc
  3. 28个经过重新设计的著名博客案例
  4. github开源项目免费使用Azure PipeLine
  5. C++工作笔记-枚举类型的作用
  6. vmvare连接linux
  7. 对VC++一些常见问题的整理
  8. aws 部署python lambda_awslambda-为Lambda工具部署Python项目。-Philipp Gorczak Getting started Usage...
  9. java基础 (六)面向对象(一)
  10. Oracle日期函数TRUNC
  11. [966]无需ROOT就能让你用上Xposed框架
  12. luogu 5561 [Celeste-B]Mirror Magic 后缀数组+RMQ+multiset
  13. CANoe 入门 _CAPL编程
  14. JavaScript内存分配及垃圾回收机制
  15. 计算机任意符号,如何打特殊符号,勾勾叉叉之类(非输入法,任意电脑)
  16. Golang之NSQ
  17. 前端模板免费下载网站
  18. Lightning 0.5 Chinese Language package
  19. [渝粤教育] 西南科技大学 钢筋砼与砌体结构 在线考试复习资料(1)
  20. 如何构建低延时的直播体验?摩杜云视频直播来帮忙!

热门文章

  1. 网易云音乐怎样下载mp3格式的音乐
  2. 播放失败246106异常代码_三菱-菱云系列电梯故障代码
  3. 如何定义一个带参数的宏
  4. Nginx 同时运行多个服务
  5. 网络流量分析 NetFlow是什么 详解 科普 ~互联网业务流量监测技术的应用和设计---perfect
  6. 如何在Unity中使用WebXR开发AR/VR应用
  7. Centos 异步 IO framework io_uring,基本原理,程序示例与性能压测
  8. JAVA连接SQL2005
  9. STM32基础-外部中断与优先级
  10. 怎么重装服务器的系统,怎么重装服务器操作系统