Java面向对象程序思想
Java第六天
面向对象程序思想
一、面向过程
分析出解决问题的步骤,然后用函数(Function )或者程序过程(Poceduere )把这些步骤步一步地实现,程序执行的过程就是按一定顺序调用函数并 且执行函数的过程。解决问题的过程就是函数执行的过程。所以面向过程(Procdure Oriented )的核心是,分析事物过程,用函数来实现。
二、面向对象
究竟什么是面向对象?我们需要一 点咬文嚼字的精神,需要点穷理尽微的劲头。
早晨起来面向太阳,不是只要求站立的姿势,而是要求怎么看世界的。看到了早晨的太阳在哪里,就知道了它红彤彤、朝气蓬勃的样子,还知道了前面是东,后面是西的方位,太阳为方向提供了参照。
面向对象(Objet- Oriented, 00)也是同样的道理。面向它们,而不是背离它们,不是对它们的存在视而不见。
面向对象,把对象当作整体,而不是撕裂的条块分割的东西,因为对象以整体存在于世。这有点像以人为本的理念。
基于这个基本理念,面向对象语言(OOPL)中把对象的属性和操作封装起来,作为一个整体。认为对象的操作是对象自己的事情,这在思维方式和解决问题方式上是回归自然。
基于这个理念,易于发现了对象之间的继承关系,例如学生干部类从学生类继承了许多,又新增了某些属性和操作,例如职务。这使得代码可以重用( Reusable),编程效率更高了。
三、例子
基于这个理念,让同类操作拥有同一个名字,它们在不同语境下有不同的含义。
例如:三角形、矩形、圆形、梯形计算面积,可以共用一个名字area,而不必取4个不同的名字,这使得软件的维护变得容易了。其实,我们还是要定义4个方法:
double area(Trangle tri) { //计算三角形面积return 低*高/2;}double area(Rectangle rect) { //计算矩形面积return 低*高;}double area(Circle cir) { //计算圆形形面积return PI*半径*半径;}double area(Trapezoid trap) { //计算梯形形面积return 梯形面积计算公式;}
一个更加形象的例子:
import java.util.Scanner;class Circle {private double radius;Circle(double r) {this.radius=r;}public double getArea() {return Math.PI*radius*radius;}// 求面积public double getPerimeter() {return 2*Math.PI*radius;}// 求周长
}
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);double r = sc.nextDouble( ); Circle c = new Circle(r);System.out.println(c.getArea());System.out.println(c.getPerimeter());sc.close();}
}
四、面向对象的三大特性
1.封装性
- 在你的计算机中,有很多文件夹,每个文件夹里有许多文件。同一个文件夹中的文件一般有相同属性:比如,都是java文件,或者都是class
文件。每个文件是一个对象,文件夹就是一个类。具有相同属性的对象归为一个类。文件夹名字就是类名。 - 文件对象除了具有文件名、大小、最后修改时间等属性,是不是还有对属性的操作?件可能被编辑,拷贝、删余、粘贴,这些操作,可以改变属性的值。例如,编辑文件后,文件的名字、大小和最后修改时间都发生了改变。
- 封装(Eapsulaton ).就是在类中对本类对象有哪些属性,属性的名字、
数据类型、可见性,以及对象有哪些操作进行集中说明。按程序语言术语,类是一种数据类型, 用类可以定义一个一个对象。 - 对象是变量或者称为类的实例。
- 封装,实现了数据的隐藏( data hding), 部分数据对程序的其他部分隐献。隐藏的目的是防止别人修改数据。
- 例31中,Crle. Rctungle 和Tange类中分别封装了一些数据和方法。
实现隐度java只需要在数据定义的语句中使用修饰符即可。 - 例如:private int x;x数据不能在其他类中不能被直接访问,故其被“的藏”语句中的private
就是描述变量可见性的修饰符。
2.继承性
- 继承。继承机制是为了支持代码的可重用性。
- 定义新的类。可以从已有的类中组继承代码。减少了程序的总代码量和写代码时间,缩短了开发周期。
- 例如:定义了三角形类Tiangle则定义直角三角形Rtriangle继承性可以继承Tiangle中的数据和方法。
3.多态性 - 多态自然语言的词多义现象,比如汉字打厂用在不同上下文中含义不同。“打酱油”是买酱油,“打苹果“是削苹果皮,“打牌”是玩牌,文确定同义的微法显然增强了“打车”则是租车。这种根据某个词的上下多志性口形式,表达多种不同的动作。增加了词的表达能力。
- 代表是Java中方法重载和方法重写。
Java面向对象程序思想相关推荐
- java面向对象程序练习_5本面向经验丰富的程序员的高级Java书籍
java面向对象程序练习 Sometimes back I wrote an article for Best Core Java Books for beginners, today I am sh ...
- 小赵老师课堂开课了 !天道酬勤,相信自己学到就是赚到,一起来学习吧--- java面向对象程序设计基础的知识!!!!
大家!我是下一个pony,今天我又来更新帖子了~ 今天我们讲解的是java面向对象程序设计基础的知识~我们从以下几个方面来进行简单的讲解: ============================== ...
- 我们程序员眼中的对象-看完华华的文章妈妈再也不担心我找不到对象了-Java面向对象编程思想理解系列(1)
大家好!!!我叫霜华,是一个帅到没天理 骚里骚气,热爱人生与绿色 是一个不像程序员的程序员 作为一个在java这门领域沉迷一年半的人,如今在技术栈广度和深度 还是业务能力在客观层面讲确实进步迅速 (可 ...
- java面向对象程序课本,Java面向对象程序设计
出版说明 前言 第1篇 Java程序设计基础 第1章 Java语言入门 1.1 Java的诞生 1.2 Java的特点 1.3 Java程序的开发工具 1.4 Java运行环境 1.4.1 JDK的下 ...
- Java面向对象程序基础设计之第三章
3.1.1 自定义包 如果在程序中没有声明包,类将被存放在default的包中,该方式不被提倡. 语法: package 包名 包命名规范: 包的命名规范应当体现出项目资源良好的划分 自定义标签类所在 ...
- Java面向对象程序开发——JDK8新特性
文章目录 网络编程入门知识 JDK8新特性 Lambda表达式 以多线程为例: Lambda结合for循环: Stream流 获取一个流的2种常用的方式: 常用方法 终结方法 延迟方法 案例 网络编程 ...
- java面向对象程序_面向对象编程基础(java)
面向对象编程基础 1.1 面向对象概述 在程序开发初期,大家使用的是结构化开发语言,也就是面向过程(opp),但随着市场需求剧增,软件的规模也越来越大,结构化语言的弊端也暴露出来. 开发周期无休止的拖 ...
- 问渠那得清如许?为有源头活水来。——java面向对象的思想
20169205 2016-2017-2 <移动平台应用开发实践>第2周学习总结 教材学习内容总结 本次作业要求的部分主要是Java高级语言实现面向对象编程的基本方法,其中所介绍的面向对象 ...
- Java面向对象编程思想
面向对象三个特征: 封装.继承.多态 封装: 语法: 属性私有化(private).提供相对应的get/set 的方法进行访问(public). 在set/get的方法中对属性的数据 做相对应的业务逻 ...
最新文章
- AI一分钟 | 吴恩达和中联重科合作,进军智慧农业;百度Q2营收260亿元,净利润64亿...
- Linux下USB suspend/resume源码分析【转】
- 如何启用漫游用户功能
- bzoj2058: [Usaco2010 Nov]Cow Photographs(逆序对)
- Android之MVVM框架 - 数据绑定
- 制作 docker 镜像
- PHP实现一个轻量级容器
- oracle创建视图类型为日期,oracle创建视图包含clob字段,报错:数据类型不一致:应为-,但却获得CLOB...
- Java集合中List,Set以及Map等集合体系详解(史上最全)
- 软件测试方法和技术知识点有哪些?
- 笔记5:QQ群聊天机器人
- 编程语言学习方法总结
- 大芒果mysql下载_大芒果wow服务端
- Validation参数校验注解
- 汽车厂VIN码生成软件
- Microsoft Visual SourceSafe
- P6LED显示屏价格报价用材规格与技术参数
- 编程初学者看不懂程序的几点建议
- 485通讯的校验和_组态王与西门子S71200PLC无线Modbus通讯
- 关于localhost404打不开
热门文章
- Chromium源码—base基础库说明
- hive server2源码地址在哪_实战搭建Thinkphp二次开发威客RW平台源码粉丝关注投票发布系统...
- 实习入职这几天天的感受与感想
- [Linux] centos 6.5 httpd 自建CA 认证 实现 https 服务
- 微软推出三维立体地图搜索(3-D City Live Search)
- 《洋娃娃和小熊跳舞》吉他简谱
- 有关深度学习中的目标检测论文阅读
- springboot---web---静态资源映射
- 构建之法阅读笔记002
- [IE9] IE9正式版发布(附官方下载链接)