相信很多人都有听到,见到这么一句话:Java是一门面向对象编程的语言,但是又是否对这句话有了自己的理解呢?

  一、面向对象

  面向对象是一种新兴的程序设计方法,也可以说是一种新的程序设计规范(paradigm),其基本思想是使用对象、类、继承、封装、多态等基本概念来进行程序设计。从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式。

  常见编程思想

  面向对象编程OOP:Object Oriented Programming,是一种以对象为基础的编程思想。主要关注“谁来做”,即完成任务的对象。典型的是Java语言

  面向过程编程OPP:Procedure Oriented Programming,是一种以事物为中心的编程思想。主要关注“怎么做”,即完成任务的具体细节。典型的是C语言

  面向切面编程AOP:Aspect Oriented Programming,基于OOP延伸出来的编程思想。主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。

  控制反转IOC:Inversion of Control,它也是一种设计思想。在Java开发中,IOC意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。常见于Spring框架

  二、对象

  什么是对象?

  万物皆对象(每个独立的个体都是对象,虚拟的和现实的都可以是对象)

  详细解释下:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务(即方法)组成。

  类的构造器实例化可以生成对象,一个对象的生命周期包括三个阶段:生成,使用,销毁

  三、类

  类是具有相同属性和方法的一组对象的集合,它为属于该类的所有对象提供了统一的抽象描述,类实现包括两个部分:类声明和类体。其类体内部包括属性和方法两个部分

  类声明格式

  

[public][abstract|final] class className [extends superclassName] [implements interfaceNameList]{
……
}

  类体格式

class className{
[public | protected | private ] [static] [final] [transient] [volatile] type variableName;//成员变量
[public | protected | private ] [static] [final | abstract] [native] [synchronized] returnType methodName([paramList]) [throws exceptionList]{
statements
}//成员方法

  四、Java面向对象的基本特性

  1.封装

  封装性就是隐藏对象的属性和实现细节,仅对外公开接口。

  优点:1)便于使用者使用(使用时无需关心内部如何实现),也防止了使用者错误修改系统属性;

        2)有助于建立各个系统之间的松耦合关系,提高了软件的可重用性,减少了代码冗余问题;

     3)具有安全性

   2.继承

  Java的继承通过extends关键字来实现,实现继承的类被称为子类,被继承的类称为父类(有的也称其为基类、超类),子类继承父类的属性和方法,并能根据自己的需求扩展出新的属性和方法

  优点:提高了代码的可复用性

   3.多态

  Java 多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作

  优点:不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态

   4.抽象(有部分人说java有三大特性,也有部分人说有四大特性)

  抽象就是有点模糊,还没确定好的意思。

  优缺点:抽象类或接口定义大概需要的方法或属性,具体实现由使用他的继承类(或实现类)完成实现

    

最新文章

  1. iOS开发多线程篇 — GCD的常见用法
  2. 二叉树基本操作C++
  3. 去掉Win7资源管理器左侧导航窗格中的收藏夹、库等的方法
  4. nios II--实验1——hello_world硬件部分
  5. The 2015 China Collegiate Programming Contest A. Secrete Master Plan hdu5540
  6. wamp环境下phpmyadmin拒绝访问
  7. PHP/MYSQL 查询大数据/遍历表
  8. jQuery 元素遍历
  9. 利用Android手机里的摄像头进行拍照
  10. Gym 100507L Donald is a postman (水题)
  11. vc++字符转换
  12. linux iptable 设置实践
  13. 转:web_url函数学习
  14. angular.js实现省市区三级联动指令
  15. 关于 for 循环与 循环嵌套
  16. elasticsearch(6) 映射和分析
  17. Java基于opencv实现图像数字识别(四)—图像降噪
  18. Sitecore开发 IP地理定位服务入门
  19. DB2 数据库常用操作【持续更新】
  20. 【Mac双系统设置系统默认启动系统】解决方式

热门文章

  1. 前端学习笔记——CSS选择器
  2. camunda流程实例启动的一些简单操作
  3. Java方法覆盖教程
  4. 推荐Windows下SVN服务器端和客户端工具软件
  5. zabbix cpu监控介绍
  6. Rabbitmq的延时队列的使用
  7. Apache Hadoop集群离线安装部署(三)——Hbase安装
  8. 编译错误提示PATH_MAX未声明
  9. python 对redis key的基本操作
  10. 文件上传绕过WAF