一、对象是对问题领域中事物的抽象,对象具有以下特性:<o:p></o:p>
1. 万事皆为对象。问题领域中的实体和概念都可以抽象为对象。例如:在学校领域,对象包括学生、成绩单、教师、课程,教室等。在太阳系领域,对象包括太阳、月亮、地球、火星和木星等。在用java语言创建的图形用户界面中,窗口、滚动面板、按钮、列表、菜单和文本框等也都是对象。<o:p></o:p>
2. 每个对象都是唯一的。对象的唯一性来自于真实世界中事物的唯一性。世上不存在两片一模一样的叶子。例如:学校领域的学生小张,学生小王,这些都是唯一的对象。在java虚拟机提供的运行时环境中,保证每个对象的唯一性的手段是为它在内存中分配唯一的地址。<o:p></o:p>
3. 对象具有属性和行为。例如:一部手机:牌子是摩托罗拉,价格是2000元,黑色,能够拍照,打电话和收短信等。这部手机的属性包括品牌类型(type),价格(price)和颜色(color),行为包括拍照(takePhoto()),打电话(call()),收短信(receiveMessage())和发短信(sendMessage())。对象的行为包括具有的功能及具体的实现。<o:p></o:p>
4. 对象具有状态。状态是指某个瞬间对象的各个属性的取值。<o:p></o:p>
5. 对象都属于某个类。每个对象都是某个类的实例。如:中国和美国都属于国家类,中文和英文都属于语言类。类是具有属性和行为的对象的集合。<o:p></o:p>
同一个类的所有实例具有相同属性,但是属性的取值不一定相同。<o:p></o:p>
二、类是一组具有相同属性和行为的对象的抽象。即是同类型对象的定义书,规范。<o:p></o:p>
三、使用class定义类<o:p></o:p>
在面向对象设计中,对象并不会凭空产生,你必须识别出问题中的对象,在java中,用“类”来定义出对象的规范,再根据类来构建出一个个的对象,然后通过对象所提供的方法来与程序互动。<o:p></o:p>
<o:p> </o:p>
四、对象提供的服务是由对象的方法来实现的,因此发送消息实际上就是调用一个对象的方法。<o:p></o:p>
五、封装:对于OOP(面向对象编程)而言就是将属性和方法一起包装到一个程序单元中,并隐藏方法的实现过程。<o:p></o:p>
六、抽象:是指从特定角度出发,从已经存在的一些事物中抽取我们所关注的特性,形成一个新的事物的过程。<o:p></o:p>
抽象是一种由具体到抽象、由复杂到简洁的思维方式。在面向对象的开发过程中,抽象体现在以下几个方面:<o:p></o:p>
1. 从问题领域的事物到软件模型中对象的抽象。<o:p></o:p>
2. 从对象到类的抽象。<o:p></o:p>
3. 从子类到父类的抽象。如下图:<o:p></o:p>
<v:shapetype o:spt="75" coordsize="21600,21600" filled="f" stroked="f" id="_x0000_t75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" o:connecttype="rect" gradientshapeok="t"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" o:ole="" style="WIDTH: 254.25pt; HEIGHT: 327.75pt"><v:imagedata src="file:///C:\DOCUME~1\qiujy\LOCALS~1\Temp\msohtml1\01\clip_image001.emz" o:title=""></v:imagedata></v:shape><o:p></o:p>
七、封装一个类,就是根据具体的应用从同一类型对象中抽象出相关的属性和方法:<o:p></o:p>
1.定义类的语法:<o:p></o:p>
[访问修饰符] class 类名 {<o:p></o:p>
//这里放属性和方法的声明。 <o:p></o:p>
}<o:p></o:p>
2.声明属性的语法:<o:p></o:p>
[访问修饰符] 数据类型 属性名[=初始值];<o:p></o:p>
3.定义方法的语法:<o:p></o:p>
[访问修饰符] 返回值类型 方法名(参数类型 参数名1,…){<o:p></o:p>
//这里放方法的具体实现语句 <o:p></o:p>
}<o:p></o:p>
例:<o:p></o:p>
public class CellPhone {<o:p></o:p>
<o:p> </o:p>
private String type;<o:p></o:p>
private String color;<o:p></o:p>
private double price;<o:p></o:p>
<o:p> </o:p>
public void takePhoto(){<o:p></o:p>
...<o:p></o:p>
}<o:p></o:p>
public void call(){<o:p></o:p>
...<o:p></o:p>
}<o:p></o:p>
public void sendMessage(){<o:p></o:p>
...<o:p></o:p>
}<o:p></o:p>
public void receiveMessage(){<o:p></o:p>
...<o:p></o:p>
}<o:p></o:p>
<o:p> </o:p>
}<o:p></o:p>
|
八、构造方法<o:p></o:p>
1.怎么根据设计好的类来创建一个对象?<o:p></o:p>
利用new关键词调用类的构造方法(类的一种特殊方法)就可创建该类的一个对象。 <o:p></o:p>
2.构造方法的名字和类名相同,并且没有返回值。<o:p></o:p>
3.构造方法的作用在于构造并初始化对象。<o:p></o:p>
4.两种构造方法<o:p></o:p>
(1).参数化构造方法:<o:p></o:p>
访问修饰符 类名(参数类型 参数名,…){<o:p></o:p>
...<o:p></o:p>
}<o:p></o:p>
如上例可写:<o:p></o:p>
public CellPhone(String t, String c, double p){<o:p></o:p>
type = t;<o:p></o:p>
color = c;<o:p></o:p>
price = p;<o:p></o:p>
}<o:p></o:p>
|
<o:p> </o:p>
(2).默认(隐式)构造方法:即无参数的构造方法。<o:p></o:p>
Public CellPhone(){<o:p></o:p>
……<o:p></o:p>
}<o:p></o:p>
|
<o:p> </o:p>
5.注意:如果类中有一个自己编写的构造方法时,编译器就不会为我们再提供那个默认构造方法。此时又希望使用你的类的用户还可以用默认构造方法来创建类的实例时,那你就必须在类中添加一个默认构造方法。<o:p></o:p>
九、关于源文件:一个源文件中可以定义多个类,但只能有一个公有类,且文件名必须跟公有类的类名相同。<o:p></o:p>
十、this关键词<o:p></o:p>
1.每个类的每个非静态方法(没有被static修饰)都会隐含一个this引用名称,它指向调用这个方法的对象。<o:p></o:p>
2.当在方法中使用本类的属性时,都会隐含地使用this名称,当然也可以明确指定。<o:p></o:p>
3.this用法一:当类中某个非静态方法的参数名(或局部变量名)跟类的某个属性(成员变量)名相同时,为了避免参数的作用范围覆盖了类属性的作用范围,必须明确地使用this名称来指定。如:<o:p></o:p>
public CellPhone(String type, String color, double price){<o:p></o:p>
this.type = type;<o:p></o:p>
this.color = color;<o:p></o:p>
this.price = price;<o:p></o:p>
}<o:p></o:p>
|
<o:p> </o:p>
5.this用法二:如果某个构造方法的第一条语句具有形式this(...),那么这个构造方法将调用同一类中的其他构造方法。<o:p></o:p>
十一、理解调用一个构造方法创建一个对象的执行过程:<o:p></o:p>
1.初始化所有属性为默认值(0,0.0,false或null)。<o:p></o:p>
2.按照在类声明中出现的次序依次执行所有属性的初始化语句和初始化块。<o:p></o:p>
3.如果构造方法的第一行代码调用了另一个构造方法,则执行被调用的构造方法主体。<o:p></o:p>
4.执行本构造方法的主体。<o:p></o:p>
十二、包:为了便于管理大型软件系统中数目众多的类,解决类命名冲突的问题,Java引入了包(package)。<o:p></o:p>
1.在使用许多类时,类和方法的名称很难决定。有时需要使用与其他类相同的名称。包基本上隐藏了类并避免了名称上的冲突。<o:p></o:p>
2.用package来声明包,package语句必须是文件中的第一条语句。<o:p></o:p>
3.包对应着文件系统的目录层次结构。<o:p></o:p>
4.在package语句中,用“.”来指明包(目录)的层次。
5.在当前目录下生成包<o:p></o:p>
javac -d . CellPhone.java<o:p></o:p>
在指定目录下生成包<o:p></o:p>
javac -d E:\JavaLesson CellPhone.java<o:p></o:p>
6.运行时:<o:p></o:p>
java 包名.类名<o:p></o:p>
7.用import来导入你想用的包中的类。<o:p></o:p>
<o:p> </o:p>
十三、继承:是复用代码的有力手段,当多个类之间存在相同的属性和方法时,可从这些类中抽象出父类(超类)。在父类中定义这些相同的属性和方法,所有子类无须重新定义这些属性和方法,而只要通过extends语句来声明继承父类。这样子类就自动拥有在父类中定义的属性和方法了。<o:p></o:p>
1.继承的优点<o:p></o:p>
(1).代码的可重用性<o:p></o:p>
(2).超类的属性和方法可用于子类<o:p></o:p>
(3).设计应用程序变得更加简单<o:p></o:p>
(4).可以轻松地自定义子类<o:p></o:p>
分享到:
相关推荐
JAVA面向对象程序设计是 Java 编程语言的核心 contents,涵盖了面向对象编程的基本概念、语法规则、编程技术和实际应用等方面的知识。本文总结了 JAVA面向对象程序设计的知识点,涵盖了 Java 语言的基本语法、面向...
1. **面向对象编程基础**:面向对象编程(OOP)是一种编程范式,它基于“对象”的概念,强调数据和操作数据的方法结合在一起。Java作为一款纯面向对象的语言,其一切皆为对象,包括基本类型都有对应的包装类。 2. *...
本项目是基于C++的面向对象程序设计实现,旨在教授学生如何运用面向对象编程思想来构建实际的应用程序。** **一、面向对象编程基础** 面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,其核心思想...
SSD3教材内容覆盖了面向对象编程的多个方面,包括但不限于继承、多态、抽象类和接口的实现。 在学习过程中,学生不仅需要通过Java语言进行编程实践,还要学习设计健壮、可扩展的类。课程要求学生能够使用UML(统一...
C++是一种强大的、通用的编程语言,以其支持面向对象编程(OOP)而闻名。面向对象编程是一种编程范式,它以对象为中心,强调数据和操作数据的方法的封装。本资料集是关于“C++面向对象程序设计”的课后习题答案,...
这个项目旨在帮助学生掌握Java语言中的面向对象编程概念,特别是类的设计、属性和方法的运用,以及数组和集合(如ArrayList)的使用。 在“随机点名器”项目中,主要功能要求包括: 1. 存储全班同学的姓名。 2. ...
《面向对象程序设计:C++语言描述(原书第2版)》内容丰富,结构合理,写作风格严谨,深刻地论述了c++语言的面向对象编程的各种技术,主要内容包括:面向对象编程方法、c++语言的各种特性、stl、c++输入/输出流、mfc等。...
其最大特色是以六条主线贯穿全书:面向对象编程思想、Java语言的语法、Java虚拟机执行Java程序的原理、在实际项目中的运用、设计模式和性能优化技巧。同时,本书还贯穿了Sun公司的SCJP(Sun Cer......
首先,类是面向对象编程的基础。类定义了一组属性和行为,这些属性描述了类的特征,而行为则表示类可以执行的操作。在Java中,我们使用关键字"class"来声明一个类,例如: ```java public class MyClass { // 属性...
面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它将程序设计看作是对象的交互,对象之间的关系和行为。 一、对象和类 在Java中,对象是指具有某些特征和行为的实体,例如人、学生、大象、冰箱...
本实验旨在让学生深入理解和实践面向对象编程的基本原理和技巧。 首先,实验要求学生掌握类的定义。在 Python 中,类是创建对象的蓝图,它包含属性(成员变量)和行为(成员函数)。例如,定义了一个名为 `Vehicle`...
【标题】"C#面向对象编程期末参考题"揭示了本次讨论的核心——C#编程语言中的面向对象编程(Object-Oriented Programming, OOP)概念,这是软件开发中的一种重要方法论。C#是一种现代、类型安全且面向对象的语言,...
面向对象编程在设计、测试和维护大型应用程序方面尤其有用。通过封装,可以隐藏不必要的信息,从而简化类的使用。继承促进了代码重用,并提供了一种自然的方式来模拟现实世界的层次结构。而多态性允许在软件中添加新...
C++是一种强大的、通用的编程语言,以其支持面向对象编程(OOP)而闻名。面向对象编程是一种设计和实现软件的方式,它强调将现实世界的问题和解决方案映射到计算机程序中的对象。本资料包“C++面向对象程序设计 经典...
C++是一种强大的编程语言,以其面向对象特性而闻名,它结合了过程化编程和面向对象编程的优势。在“C++面向对象程序设计教程——课件PPT”中,我们可以深入学习这一主题,由陈维兴和林小茶编著,清华大学出版社出版...
《C++面向对象编程实例大全》是一本专为初级学习者设计的教程,旨在通过丰富的实例深入浅出地讲解C++的面向对象编程概念。面向对象编程(Object-Oriented Programming,简称OOP)是C++的核心特性,也是现代软件开发...
1. **对象和类**:对象是面向对象编程的基本单元,它包含了数据(属性)和操作这些数据的方法(行为)。类是创建对象的模板或蓝图,定义了一组具有相同特征和行为的对象的通用描述。 2. **封装**:封装是面向对象的...
Matlab面向对象编程是一种在MATLAB环境下通过面向对象的方法来组织和构造程序代码的技术。面向对象编程(OOP)的基本特征包括抽象、封装、继承和多态。以下是根据给定的文件信息,对这些知识点的详细解释: 1. 抽象:...
C++语言继承了C语言的优点,并加入了面向对象编程的概念,成为了一种功能强大且灵活的程序设计语言。 1.1 C++语言的特点 * 静态类型:C++语言是一种静态类型的语言,变量的数据类型在编译时确定。 * 编译型:C++...