java第一课 面向对象的编程概念
一、什么是对象(object)?
对象是相关状态和行为的软件包。
1.现实社会的对象都有两个共同特征:状态和行为。如:狗有状态(名称,颜色,品种,饥饿)和行为(吠叫,取出,摇尾)。
2.软件对象在概念上类似于现实世界的对象:它们也包括状态和相关行为。例如:如果自行车仅具有6个档位,则换档的方法可以拒绝小于1或大于6的任何值。
对象将其状态存储在字段(某些编程语言中的变量)中,并通过方法(某些编程语言中的函数)公开其行为。
方法对对象的内部状态进行操作,并作为对象到对象通信的主要机制。
隐藏内部状态并要求通过对象的方法执行所有交互称为数据封装 - 面向对象编程的基本原则。
3.将代码捆绑到单个软件对象中可带来许多好处,包括:
- ) 模块化:可以独立于其他对象的源代码编写和维护对象的源代码。一旦创建,对象就可以轻松地在系统内部传递。
- ) 信息隐藏:通过仅与对象的方法交互,其内部实现的细节仍然隐藏在外部世界之外。
- ) 代码重用:如果对象已存在(可能由其他软件开发人员编写),则可以在程序中使用该对象。这允许专家实现/测试/调试复杂的,特定于任务的对象,然后您可以信任这些对象在您自己的代码中运行。
- ) 可插拔性和调试简便性:如果某个特定对象有问题,您只需将其从应用程序中删除,然后插入另一个对象作为替代对象。这类似于解决现实世界中的机械问题。如果螺栓断裂,则更换它,而不是整个机器。
二、什么是类(class)?
类是创建对象的蓝图或原型。
在现实世界中,您经常会发现许多相同类型的单个对象。可能存在数千种其他自行车,所有相同的品牌和型号。每辆自行车都是使用相同的蓝图构建的,因此包含相同的组件。
在面向对象的术语,我们说你的自行车是一个实例中的类的对象被称为自行车。一类是从中创建单个对象的蓝图。
三、什么是继承(Inheritance)?
面向对象编程允许类继承其他类中常用的状态和行为。
创建子类的语法很简单。在类声明的开头,使用extends关键字,后跟要继承的类的名称:
class MountainBike extends Bicycle {
// new fields and methods defining
// a mountain bike would go here
}
四、什么是接口/界面(interface)?//区别于api接口
没有实现的方法集合称为接口。
对象通过它们公开的方法定义它们与外部世界的交互。方法形成对象与外界的界面 ;(例如:电视机正面的按钮是您与塑料外壳另一侧电线之间的接口。按“电源”按钮打开和关闭电视。)
实现接口允许类对其承诺提供的行为变得更加正式。接口在类和外部世界之间形成契约,并且该合同在构建时由编译器强制执行。
如果您的类声称实现了一个接口,那么该接口定义的所有方法必须出现在其源代码中才能成功编译该类。
interface Bicycle {
// wheel revolutions per minute
void changeCadence(int newValue);
void changeGear(int newValue);
}
class ACMEBicycle implements Bicycle {
int cadence = ;int gear = ;
// The compiler will now require that methods
// changeCadence, changeGear, speedUp, and applyBrakes
// all be implemented. Compilation will fail if those
// methods are missing from this class.
void changeCadence(int newValue) {
cadence = newValue;
}
void changeGear(int newValue) {
gear = newValue;
}
void printStates() {
System.out.println("cadence:" +
cadence + " gear:" + gear);
}
}
(为了便于对比代码有删减,原文参看 https://docs.oracle.com/javase/tutorial/java/concepts/interface.html)
注意: 要实际编译ACMEBicycle该类,您需要将public关键字添加到已实现的接口方法的开头。稍后您将在有关类和对象以及 接口和继承的课程中了解相关原因 。
五、什么是包(package)?
按功能组织类和接口的命名空间称为包。
包是一个命名空间,用于组织一组相关的类和接口。从概念上讲,您可以将包视为与计算机上的不同文件夹类似。您可以将HTML页面保留在一个文件夹中,将图像保存在另一个文件夹中,将脚本或应 因为用Java编程语言编写的软件可以由数百或数千个单独的类组成,所以通过将相关的类和接口放入包来保持组织是有意义的。
Java平台提供了一个适合在您自己的应用程序中使用的庞大的类库(一组包)。该库称为“应用程序编程接口”,简称“API”。它的包代表了最常用于通用编程的任务。例如,String对象包含字符串的状态和行为; 一个File对象允许程序员轻松地创建,删除,检查,比较或修改文件系统上的文件; 一个Socketobject允许创建和使用网络套接字; 各种GUI对象控制按钮和复选框以及与图形用户界面相关的任何其他内容。有数以千计的课程可供选择。这使程序员可以专注于特定应用程序的设计,而不是使其工作所需的基础结构。
在 Java平台API规范包含了所有的包,接口,类,字段和Java SE平台提供的方法完整列表。在浏览器中加载页面并为其添加书签。作为程序员,它将成为您最重要的参考文档。
java第一课 面向对象的编程概念的更多相关文章
- 【C语言探索之旅】 第二部分第一课:模块化编程
内容简介 1.课程大纲 2.第二部分第一课: 模块化编程 3.第二部分第二课预告: 进击的指针,C语言王牌 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C ...
- 尚学堂Java第一课
今天是北京尚学堂郑州分校开课的第一天,小班面授教学. 我很兴奋,是一个小白对IT大神渴求传道授业解惑的兴奋. 杨老师还是一贯耐心详细的手敲了第一堂课的完整大纲,必须给杨老师赞赞赞!!! 从幽默的制定班 ...
- 快乐的一天从JAVA第一课开始,生活美滋滋!!!
---恢复内容开始--- 学JAVA第一天 今天稀里糊涂就把JAVA环境配好了 现在回想一下,吧环境跟大家分享一下…… 第一步:下载 JAVA(推荐使用谷歌浏览器,因为谷歌浏览器右键点 ...
- Java基础之面向对象以及其他概念
一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平台,jvm不是跨平台的. JR ...
- 1.Java第一课:初识java
今天也算是正式地开始学习Java了,一天学的不是太多,旨在入门了解Java.还好现在学的都是基础,也能赶得上进度,希望以后能一直保持这种精神状态坚持学下去.下面就简单来说说今天所学的内容吧. 1计算机 ...
- java第一课,java基础
Java: 是1991年SUN公司的James Gosling等人开发名称为Oak的语言,希望用于控制嵌入在有线电视交换盒,PDA等的微处理器.java.是面向互联网的语 ...
- java第一课总结
转眼间开学了,我们也正式进入了大二.心里既有激动,又有些感慨,还带有一些担忧.激动的是我们褪去了大一的稚气成为了一名大二的学长了,第一次体会到了大学学长的感觉,心里很是激动.感慨的是我们又成长了一岁, ...
- Java 第一课
怎么去学习java: 1,课前预习,加深对课上学习的吸收! 2,课后预习,让我们能够对所学内容的掌握! 3.通过画流程图,锻炼逻辑思维能力,学会从程序员的角度去看到问题,摒弃以前的惯性的思维方式!
- java第一课:环境、变量、数据类型
一.java编程注意事项1.java区分大小写2.每条语句结尾有分号3.上下级代码注意缩进4.大括号要成对出现5.标点符号要用英文半角(半角全角区别)二.eclipse1.eclipse是自编译及时编 ...
随机推荐
- fab 菜单实现之前传-钟表表盘
个人很喜欢谷歌的material design,很喜欢但是没有动手弄过,今天想动手操作一下Floating Action Button菜单,网上有很多种:圆形.扇形.射线.直线等.我想在一个例子中用到 ...
- Web前端-CSS必备知识点
Web前端-CSS必备知识点 css基本内容,类选择符,id选择符,伪类,伪元素,结构,继承,特殊性,层叠,元素分类,颜色,长度,url,文本,字体,边框,块级元素,浮动元素,内联元素,定位. 链接: ...
- token登录
①定义 Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再 ...
- 解决 Docker Image的UTF-8中文字符集的问题(以Oracle为例)
最近因业务需要,需要搭建一个Oracle数据库,当然Oracle数据库支持Linux,但是在上面搭建很是复杂,所以我想起了Docker ,果然在上面发现了一个OracleDB的镜像,所以下载之,运行, ...
- c# 创建excel表头及内容
主要通过ajax调用函数Getinfo 1.定义表dh DataTable dh = new DataTable(); 2.创建表头 public void CreateCol(string Colu ...
- IPV6地址中的%号什么意思
在我配置ipv6 网络中,会发现ipv6地址后有%号,这表示什么呢? IPv6地址中的百分号是网卡interface标识.这个表示该地址仅限于标号为21的网络接口(一般指网卡或者虚拟网卡).而在其他网 ...
- windows server 2008 R2 Enterprise 间实时同步之FreeFileSync 部署过程
WindowsServer间实时同步之FreeFileSync 部署过程 1. 实验主机信息 IP 操作系统 源目录 目标目录 10.155.0.80 Windows Server 2008 R2 D ...
- Flink应用案例:How Trackunit leverages Flink to process real-time data from industrial IoT devices
January 22, 2019Use Cases, Apache Flink Lasse Nedergaard Recently there has been significant dis ...
- @EnableFeignClients 注解
feignClents在spring容器里找不到的原因 当使用的feignClents 来自引用别的工程时,需要指定包名,如果不指定就算使用ComponentScan 扫描也不行 import org ...
- springboot 定时任务
1.启动类新增注解 @EnableScheduling import org.springframework.boot.SpringApplication; import org.springfram ...