本章内容主要讲解 Java 在面向对象编程中的基本语法,面向对象设计程序的思路
1 - 1:什么是类和对象
1、对象的概念
万物皆对象,客观存在的事物皆为对象。大道名胜古迹,小到生活当中的小物品。
2、什么是面向对象
意思就是人朝着对象,翻译过来就是人关注着一个对象。对于计算机来讲,它其实比喻了人更关注了具体事物的信息。可能我们会想,这不是很复杂,其实我们只要用解决生活当中的问题的方式其实就可以理解我们的计算机当中面向对象的概念。就比如说,刚高考完,自己认为自己考的还不错,我打算自己买个手机奖励自己,当我去到中关村,售货人员首先问我的第一句话是:“你想买哪一个什么样的手机?”这时候我就会告诉他,我想买一个屏幕大、CPU快、内存大、能打电话发短信的手机,这个时候我只是描述了这个手机,但是!这个手机还不存在,这个时候,售货员就去柜台拿了个三星手机,这个手机是实体,符合刚才自己说的要求,此时,我们就把这个电话称为对象。当然,如果我们对三星这款手机不满意,我们可以要求售货员更换其他手机,那些手机也算是对象。我们上面说的买电话这个过程,就称为面向对象。
3、类
我们生活中出现这种问题时这样做算是面向对象,在程序中,我们也能这样做。售货员首先让我描述了一下,想要什么样的手机,此时,我们提供的那些信息称为类,类是模子,确定对象将会拥有的特征(属性)和行为(方法)。
类的特点:类是对象的类型,具有相同属性和方法的一组对象的集合。
什么是对象的属性?
属性——对象具有的各种特征
每个对象的每个属性都具有特定值
比如,前面说买手机的时候,手机有屏幕、CPU、内存、此时有什么,我们就可以把它理解成对象的属性,那每个对象它都有自己的特定值,例如上面三星手机的对象,它的屏幕是5寸,CPU是1.4G,内存2G,它会有特定值,我们把这些特定值称为属性。
什么是方法呢?
方法:对象执行的操作
类和对象的关系:
类是抽象的概念,仅仅是模板,比如说:“手机”。
对象是一个你能够看得到,摸得着的具体实体。
我们在后面课程里会讲,如何用代码的方式描述类和对象。
思考:
指出身边哪些物品是对象?对象的属性、方法分别是什么?
1 - 2:如何定义Java中的类
定义类
所有的Java程序都以class(类)为组织单元。比如说我们在写面向对象程序的时候,类就是我们的最基本的元素,我们必须先写一个类,才可以有对象。
什么是类:我们之前又说过,类是模子,确定对象将会拥有特征(属性)和行为(方法),对象有什么,我们就用属性来表示,对象可以干什么,我们就用方法来表示。也就是说,我们在定义类的时候,主要有两方面组成:属性和方法,这就是类的组成。
定义一个类的步骤:
a.定义类名,我们之前说过,类是对象的类型,那么为了区分不同的类型,要给类起个名字,写完一个名字以后要以一个左大括号开始,右大括号结束。class是声明类的关键字,public后这个词面说。
b.编写类的属性,对象有什么,我们是用属性来表示的。此时,我们会把属性定义在类的里面,也就是说,写在一对大括号当中。首先要指定属性的类型,再指定我们的属性名。在一个类当中,可以写一个或多个属性,当然,也可以不定义属性。
c.编写类的方法,方法是用来修饰可以干什么,也是定义在类的大括号当中的。我们可以定义一个方法,也可以定义多个方法或不定义方法。
public class 类名{
//定义属性部分(成员变量)
属性1的类型 属性1;
属性2的类型 属性2;
...
属性n的类型 属性n;
//定义方法部分
方法1;
方法2;
...
方法m;
}
我们现在可以写一个Demo看一下到底该如何创建一个类
1.1:创建类
上面我们说要买手机,首先要想象中买的手机要是什么,此时,想象中的手机我们就把它称为类。那这个手机有屏幕尺寸、CPU、内存,这些用属性来表示,手机可以打电话、发短信,用方法来表示。我们看看,用代码如何实现这些功能。
点Finish:
此时,这个文件Eclipse会帮我们自动的创建,刚刚所讲的创建三个类的步骤,第一个步骤,Eclipse会自动帮我们生成了。那我们要注意,它默认情况下生成的类文件是以Telephone命名的java。然后是要创建一个属性,和方法。
1.2:添加属性
我们想想,我们Telephone这个类有什么呢?首先,我们手机会有一个屏幕,我们见名知意,我们给它起个名字叫screen,当然我们需要给它指定一个类型,当然,这个屏幕并不是以整数形式存在的,它可能是几点几寸,所以说,我们用float类型来修饰这个属性更合适一些;那我们的手机还有什么呢?还有CPU,我们在描述CPU的时候我们发现,生活当中的CPU也不是一个整数,所以我们也可以用float类型;还有内存mem,也不是整数,也可以用float类型。
1.3:添加方法(描述这个类能干什么)
当我们在写方法时,我们要知道,方法的返回值类型,紧接着我们见名知意。
打电话(call),后面加一个小括号,我们这个方法没有参数,所以小括号里不放东西,后面再加大括号,在大括号里加东西。这次做得比较简单,在这个大括号里加一句话:Telephone有打电话的功能!
紧接着,我们的电话还可以发短信,sendMessage(){},输出一句话,Telephone有发短信的功能!
那此时,我们这一个类就写好了。
思考:
指出身边哪些物品是对象、对象的属性、方法分别是什么,用什么类来表示呢?
1 - 3:如何使用Java中的对象
当前,我们对类和对象有了一个基本的认识,并且我们可以通过对编辑器写一个类的代码信息,那我们现在来看一看,如何把一个类变成对象。
首先我们使用对象的时候是有一些步骤的:
1:创建对象
类名 对象名 = new 类名();
如:
Telephone phone = new Telephone();
我们可以看到,我们前面创建了一个类,类并没有什么东西,只有给类创建对象,对象才是真正存在的,是在内存里的。加一个new,就是实例化的过程。只不过我们把对象赋给了对象名这个变量,我们对对象名进行操作就是对对象进行操作。
2:使用对象
对象名.属性 //引用对象的属性,如:
phone.screen = 5; //给screen属性赋值5
对象名.方法名 //引用对象的方法 如:
phone.sendMessage();
好,那我们来看一个Demo,如何让计算机理解我来发送一个信息
在写代码之前,我们要注意一个小问题,因为我们写代码的时候都会把类进行识别化变成对象进行操作,所以说我们在描述属性信息的时候我们也可以称为实例变量,那么我们在写代码过程当中,我们会经常把属性称为实例变量,这点大家注意一下。
package com.imooc;
public class Telephone {
//属性(成员变量),代表一个类有什么
float screen;//屏幕
float cpu;//CPU大小
float mem;//内存大小
//方法,代表一个类能干什么
void call() {
System.out.println("Telephone有打电话的功能!");
}
void sendMessage() {
System.out.println("screen:" + screen + "cpu:" + cpu + "mem:" + mem + "Telephone有发短信的功能! ");
}
}
上面是我们刚才写的一个类,现在把sendMessage这个类,这里,我们不但输出了Telephone有发短信的功能!这段话,还输出了实例变量的值。我们来观察一下,当我们创建好对象的时候,它的实例变量的值是什么呢?(因为此时是没有给实例变量赋值的)好,我们先创建一个类。
给类起名的时候要见名知意,我们这个类的目的只有一个,就是创建我们Telephone这个对象。
前面那个Initail是初始的意思。那我们之前说过,只要new了一个类名,后面加一对小括号,就等于对一个类进行实例化。
通常来讲,我会把这个对象赋给一个变量,那这个变量的类型是什么呢?我们又说过,类是对象的类型。所i说,这个变量前面,要加上这个类:
然后通过phone.sendMessage();就可以就可以调用这个对象(phone)的方法(sendMessage())。
我们来跑一下这个程序:
我们可以看到,这些实例变量的默认值是0(float型变量赋值时需加f,否则默认浮点数是double型),那我们通常在使用对象的时候只做两个操作,一:给实例变量赋值,二、调用对象方法
大家自己把创建成对象看看这个代码该如何写。
1 - 4:单选题
假设有类 Test 下列可以正确创建对象的格式是( )
A、Test t = 1 ;
B、Test t = new Test() ;
C、Test t = new Test ;
D、Test t = Test() ;
答案在下节公布