一、什么是对象(object)?

对象是相关状态和行为的软件包。

1.现实社会的对象都有两个共同特征:状态和行为。如:狗有状态(名称,颜色,品种,饥饿)和行为(吠叫,取出,摇尾)。

2.软件对象在概念上类似于现实世界的对象:它们也包括状态和相关行为。例如:如果自行车仅具有6个档位,则换档的方法可以拒绝小于1或大于6的任何值。

    对象将其状态存储在字段(某些编程语言中的变量)中,并通过方法(某些编程语言中的函数)公开其行为。

    方法对象的内部状态进行操作,并作为对象到对象通信的主要机制。

    隐藏内部状态并要求通过对象的方法执行所有交互称为数据封装 - 面向对象编程的基本原则。

3.将代码捆绑到单个软件对象中可带来许多好处,包括:

  1. ) 模块化:可以独立于其他对象的源代码编写和维护对象的源代码。一旦创建,对象就可以轻松地在系统内部传递。
  2. ) 信息隐藏:通过仅与对象的方法交互,其内部实现的细节仍然隐藏在外部世界之外。
  3. ) 代码重用:如果对象已存在(可能由其他软件开发人员编写),则可以在程序中使用该对象。这允许专家实现/测试/调试复杂的,特定于任务的对象,然后您可以信任这些对象在您自己的代码中运行。
  4. ) 可插拔性和调试简便性:如果某个特定对象有问题,您只需将其从应用程序中删除,然后插入另一个对象作为替代对象。这类似于解决现实世界中的机械问题。如果螺栓断裂,则更换,而不是整个机器。

二、什么是类(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第一课 面向对象的编程概念的更多相关文章

  1. 【C语言探索之旅】 第二部分第一课:模块化编程

    内容简介 1.课程大纲 2.第二部分第一课: 模块化编程 3.第二部分第二课预告: 进击的指针,C语言王牌 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C ...

  2. 尚学堂Java第一课

    今天是北京尚学堂郑州分校开课的第一天,小班面授教学. 我很兴奋,是一个小白对IT大神渴求传道授业解惑的兴奋. 杨老师还是一贯耐心详细的手敲了第一堂课的完整大纲,必须给杨老师赞赞赞!!! 从幽默的制定班 ...

  3. 快乐的一天从JAVA第一课开始,生活美滋滋!!!

    ---恢复内容开始--- 学JAVA第一天 今天稀里糊涂就把JAVA环境配好了 现在回想一下,吧环境跟大家分享一下…… 第一步:下载         JAVA(推荐使用谷歌浏览器,因为谷歌浏览器右键点 ...

  4. Java基础之面向对象以及其他概念

    一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平台,jvm不是跨平台的. JR ...

  5. 1.Java第一课:初识java

    今天也算是正式地开始学习Java了,一天学的不是太多,旨在入门了解Java.还好现在学的都是基础,也能赶得上进度,希望以后能一直保持这种精神状态坚持学下去.下面就简单来说说今天所学的内容吧. 1计算机 ...

  6. java第一课,java基础

    Java:                是1991年SUN公司的James Gosling等人开发名称为Oak的语言,希望用于控制嵌入在有线电视交换盒,PDA等的微处理器.java.是面向互联网的语 ...

  7. java第一课总结

    转眼间开学了,我们也正式进入了大二.心里既有激动,又有些感慨,还带有一些担忧.激动的是我们褪去了大一的稚气成为了一名大二的学长了,第一次体会到了大学学长的感觉,心里很是激动.感慨的是我们又成长了一岁, ...

  8. Java 第一课

    怎么去学习java: 1,课前预习,加深对课上学习的吸收! 2,课后预习,让我们能够对所学内容的掌握! 3.通过画流程图,锻炼逻辑思维能力,学会从程序员的角度去看到问题,摒弃以前的惯性的思维方式!

  9. java第一课:环境、变量、数据类型

    一.java编程注意事项1.java区分大小写2.每条语句结尾有分号3.上下级代码注意缩进4.大括号要成对出现5.标点符号要用英文半角(半角全角区别)二.eclipse1.eclipse是自编译及时编 ...

随机推荐

  1. arcgis api 3.x for js 入门开发系列十八风向流动图(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  2. 简单易懂的单元测试框架-gtest(二)

    简介     事件机制用于在案例运行前后添加一些操作(相当于挂钩函数).目前,gtest提供了三种等级的事件,分别: 全局级,所有案例执行的前后 TestSuite级,某一个案例集的前后 TestCa ...

  3. 一:SqlServer中的 CEILING函数和 FLOOR函数以及ROUND()

    例如 1.ROUND() 格式为ROUND(y1,y2,y3) y1:要被四舍五入的数字y2:保留的小数位数 y3:为0,可以不写,y1进行四舍五入,不为0则y1不进入四舍五入,如果y1有值就直接根据 ...

  4. Windows Server 2016-Windows安全日志ID汇总

    Windows常见安全事件日志ID汇总,供大家参考,希望可以帮到大家. ID 安全事件信息 1100 事件记录服务已关闭 1101 审计事件已被运输中断. 1102 审核日志已清除 1104 安全日志 ...

  5. 求出100以内的素数(java实现)

    j package test1; //2018/11/30 //求100以内的所有素数 public class Main10 { public static void main(String[] a ...

  6. RubyGems系列之创建自己的gem

    转载请注明来源:https://www.cnblogs.com/zhanggui/p/9720818.html 一. 前言 我们可以在rubygems.org中下载安装他人创建的gem.现在,我们尝试 ...

  7. jquery中Json操作

    在开发中,我们有可能拿到的不是全的json,而是一部分json格式的数据,这个时候我们需要将其强转为json对象 第一种方法:使用jquery中的$.parseJSON(),但是它对json数据格式的 ...

  8. 在source中查看代码

    如果你想查看网页的代码,有时会出现这种情况: o my god!啥都看不出来!这要怎么办?放弃吗,当然不啦! 点击这个神奇的按钮,奇迹发生了! 瞬间变成这个样子,哇,好激动!

  9. 012_python在shell下单行执行多行代码

    一.有时候只是简单的获取下时间戳,不想在python解释器的交互模式下再去执行python代码,如何实现呢? 以循环输出多行为例: (1)第一种方式: python -c "exec(\&q ...

  10. 三种方法实现调用Restful接口

    1.基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...