文章目录
对象和类
理解对象
首先思考一个问题:世界是由什么组成的?化学家会说:“世界当然是有分子、原子、离子等化学物质组成。”画家会说:“世界是由各种不同的色彩组成。”但如果你是一个分类学家,你会说:“世界是由不同类型的物与事构成。”不同的职业决定了看事物不同的角度,作为一个面向对象的JAVA程序猿,我们要站在分类学家的角度去思考问题。我们看到的每一个东西都可以称为一个对象,在JAVA的世界里:万物皆对象!!!
面向对象(Odject-Oriented,OO)思想的核心就是对象(Object)。对象表示现实世界中的实体,因此,面向对象(OOP)能够很好将现实中遇到的概念模拟到计算机程序中。
对象的属性和方法
构成对象的两个最重要的因素就是特征和动作.
例如:
收银员 | 顾客 | |
---|---|---|
特征: | 姓名:杰克 | 姓名:朱丽叶 |
年龄:35 | 年龄:28 | |
体重:60千克 | 体重:52千克 | |
动作: | 收款,打印账单 | 购物 |
同样,在软件技术领域,我们用软件对象来模拟现实世界的实体,因此,软件对象都具有状态和行为.对象的状态就是现实世界中对应的属性特征,对象的行为就是现实世界中对应实体能执行的动作.
对象就是存在的具体实体,具有明确定义的状态和行为.在JAVA中,对象的状态被分别储存在一些变量里,而对象的行为通过定义方法来实施.
封装
顾名思义,封装(Encapsulation)指的是将东西包装在一起,然后新的完整的形式呈现.封装是面向对象的基本特征之一,之后我会详细一点解释。*😊😁
举个例子,一辆法拉利不能跑或者没有华丽的外表,还能称为高贵的超跑吗?当然不能,这两者是缺一不可的.可见,对象也有封装的特征.对象的属性和方法必须被封装在一起.
类
理解 类
上面提到的顾客"朱丽叶"仅仅是这类人群中的一个实例,另外迪迦奥特曼,赛罗奥特曼等等,他们都是奥特曼中的一个实例.他们都有某些相同的属性和特征,比如都很大,都能发射光线,所以他们被归为同一类.
类是具有相同属性和共同行为的一组对象的集合,类定义了对象将会拥有的特征(属性)和行为(方法)
类的属性
对象或实体所拥有的特征在类中表示时称为类的属性。例如:每一个顾客都拥有姓名、年龄和体重,这是所有顾客共有的特征。但是每一个对象的属性值又不相同。例如,顾客妹妹和顾客贝克汉姆都具有体重这个属性,但是他们的体重值是不相同的。
类的方法
对象执行的操作称为类的方法.比如:顾客类的对象都具有的行为是"购物",因此,购物就是类的一个方法.
对象和类的区别
关系
简单的说, 类定义了一个概念模型,而对象是真实的实体.
**类是描述实体的"模型"或"原型".它定义了属于这个类的对象所应该具有的状态和行为.**比如:用模子做球状冰淇淋, 制作球状冰淇淋的模子是类,它定义了如下信息:
- 球状半径
- 口味
使用这个模子做出的不同口味和颜色的球状冰淇淋是对象,它们可能是可可味、草莓味、椰子味、香芋味等。在Java面向象编程中,我们就是用你定义的类模型造这个类的一个实例,也就是造类的一个对象。因此,我们通常说“为类创建一个对象”,也叫作“为类创建一个实例”.
类是实体对象的概念模型,因此通常是笼统的、不具体的.
类是对象的类型
到目前为止,我们已经学习了不少数据类型:整型(int)、双精度浮点型( double)、字符型(char)、布尔型( boolean)、字符串( String)。这些都是Java语言已经给我们定义好的类型,当我们进行运算时,只需找到匹配的数据类型来声明变量即可。那么,如果我们想要描述顾客“朱丽叶”,她的数据类型又是什么呢?整型、字符型还是字符串型?当然都不是。“朱丽叶”的类型就是“顾客”也就是说,类就是对象的类型.
事实上,定义类就定义了一个自己的数据类型。例如:“顾客”、“人”“动物”。但是不同的是,类类型和整型类型所不同的是:类类型具有方法.“顾客"类的方法"购物”,“奥特曼"类的"打怪兽”.
JAVA的类模板
public class <类名>{
//定义属性部分
属性1类型 属性1;
属性2类型 属性2;
......
//定义方法部分
方法1;
方法2;
....
}
其中,class是创建类的关键字,在class的前面有一个public,表示"公有"的意思.在class后面要给定义的类命名,类的主题写在{ }中.命名类时也要遵守一定的规则.
- 不能使用JAVA中的关键字
- 只能是下划线"_" , " " 符 号 , 字 母 开 头 , 后 面 可 以 接 任 意 多 的 下 划 线 " " , " "符号,字母开头,后面可以接任意多的下划线"_" , " "符号,字母开头,后面可以接任意多的下划线"",""符号,字母和数字
- 如果类名由多个单词构成,则每个单词首字母均大写
- 应该使自己的类名简洁而富有描述,建议使用英译单词
如何定义类
定义类名
编写类的最外层框架
1,无参构造
public class 类名{
//程序体
}
2.有参构造
public class 类名(参数列表){
//程序体
}
参数列表,需要处理的参数放进去。具体处理写在程序体里面,没有需要处理的参数就不传参,空着就行。
编写类的属性
在类中的数据和下面要讲的方法统称为类成员。其中,类的属性就是类的数据成员。我们通过在类的主体中定义变量来描述类所具有的特征(属性),在这声明的变量称为类的成员变量。
编写类的方法
类的方法描述了类所具有的行为,是类的方法成员。我们可以简单地把方法理解为独立完成某个功能的单元模块.
示例
public class School{
//定义中心的属性
String schoolName;//中心名称
int classNum;//教师的数目
int labNum;//机房的数目
//定义中心的方法
public String toString(){
return schoolName + "培训中心"+ "\n"+"配备:"+classNum+"间教室"+labNum+"间机房"
}
}
上面示例定义了一个 School类,并且定义了3个成员变量: schoolname,class Num, labium。另外,定义了一个类的方法,方法名是 tostring()。这是一个非常特殊的方法,通常我们使用这个方法来显示这个类的相关信息。这里我们定义 tostring方法来显示中心的信息:中心的名称以及教室和机房的配备情况.
public class toSring(){
return 自定义字符串;//方法体
}
编写 toString()方法时,你只需要在“自定义字符串”部分写出你要打印输的类相关的信息就可以,其余部分全部不变。这里 tostring是方法名,是一个固定的方法名,包括每一个字母的大小写都完全不要更改。 return是“返回”的思,它是Java的关键字,这里指个功能模块将返回一个自定义的字符串.
创建和使用对象
一个School类定义好了,就可以根据定义的模子创建对象了.由类生成对象,称为类的实例化过程.一个实例就是一个对象,一个类可以生成多个对象.
创建类对象的语法
类名 对象名 = new 类名( );
在创建类的对象时,需要使用new关键字.
School center = new School( );
这里变量 center的类型就是自定义类型 School。使用new创建类的对象时,我们并没有给它的数据成员赋一个特有的值.考虑到每个对象的属性值可能是不一样的,因此,在创建类的对象之后,我们再给它赋予一个特殊的值。那么如何做呢?在Java中要引用对象的属性和方法,需要使用点操作符“.”来访问。对象名在圆点左边,而属性或方法的名称在圆点右边.
引用属性和方法的语法
对象名 . 属性 //引用对象的属性
对象名 . 方法名() //引用对象的方法
例如:创建了对象center后,我们可以给对象赋值了
center.name = "北京中心" //赋值
center.toString(); //引用对象的方法
在定义类时,如果没有给属性赋初值,Java会给他一个默认值,如下表:
类型 | 默认值 |
---|---|
int | 0 |
double | 0.0 |
char | ‘\u0000’ |
boolean | false |
String | null |
面向对象的优点
- 程序设计是要模拟现实世界中的人、事以及要解决的问题,使之能够好地用计算机来解决现实问题。面向对象程序设计能够让我们使用“类”来模拟现实世界中实体的特征和行为,也就是试图用软件对象去模拟现实对象,从而完
全实现模拟现实世界。 - 对象的行为和属性被封装在类中,外界通过调用类的方法来获得,不需关注内部如何实现。在解决问题时,我们定文了两个类:类 Schoot 和类 InitialschooSchool目的是定义类的属性和方法。 Initialschool目的是使用已定义的类,如图
图1 在一个类中调用另一个类的属性和方法
- 可以通过类的模板,创建n个类的对象,增加了重用性。比如:由School类可以创建“北京中心”、杭州中心“、”上海中心“等。
补充知识
冷知识:String类型事实上是Java开发人员使用关键字class给我们定义的一个类,因此他也有属性和方法。