类与对象
一、面向对象语言
1.封装性
面向对象编程的核心思想之一就是将数据和对数据的操作封装在一起,通过抽象,即从具体的实例中抽取共同的性质形成一般的概念,比如类的概念。
2.继承性
继承体现了一种先进的编程模式。子类可以集成父类的属性和功能,既继承了父类所具有的数据和数据上的操作,同时又可以增添子类独有的数据和数据上的操作。
3.多态性
多态是面向对象编程的又一重要特性,有两种意义上的多态,一种是操作名称的多态,即有多个操作具有相同的名字,但这些操作所接受的消息类型必须不同。例如,让一个人执行“求面积”操作时,他可能会问你求什么面积。所谓操作名称的多态性,是指可以向操作传递不同消息,以便让对象根据相应的消息来产生一定的行为。另一种多态是和继承有关的多态,是指同一个操作被不同类型对象调用时可能产生不同的行为。例如,狗和猫都具有哺乳类的功能--“喊叫”,但是,狗“喊叫”的声音是“汪汪--”,猫“喊叫”产生的声音是“喵喵--”。
因此,要学习Java编程就必须学会怎样去写类,即怎样用Java的语法去描述一类事物共有的属性和功能。属性通过变量来刻画,功能通过方法来实现,即方法操作属性形成一定的算法来实现一个具体的功能。类把数据和对数据的操作封装成一个整体。
二、类
2.1类的声明
class People{
}
class 动物{
}
class People和class动物被称为类的声明,People和动物分别是类名。类的名字要符合标志符的规定,即名字可以由字母、下划线、数字或美元符号组成,并且第一个字符不能是数字(这是语法所要求的)。在给类命名时,要遵守下列编程风格(这不是语法要求的,但应当遵守):
(1)如果类名使用拉丁字母,那么名字的首字母使用大写字母,如Hello、Time和Dog等。
(2)类名最好容易识别、见名知意。当类名由几个“单词”复合而成时,每个单词的首字母使用大写,如BeijingTime、AmericanGame和HelloChina等。
2.2 类体
写类的目的是为了描述(抽象)一类事物共有的属性和功能,描述过程由类体来实现。类声明之后的一对大括号“{”、“}”以及它们之间的内容成为类体,大括号之间的内容成为类体的内容。
类体的内容由两部分构成:一部分是变量的声明,用来刻画属性;另一部分是方法的定义,用来刻画功能。
2.3 成员变量和局部变量、
类体分为两部分:?变量的声明和方法的定义。在变量声明部分声明的变量被称为类的成员变量,在方法中声明的变量和方法的参数被称为局部变量。
2.4 方法
一个类的类体由两部分组成,即变量的声明和方法的定义。方法的定义包括两部分,即方法声明和方法体。其一般格式如下:
方法声明部分{
}
1.方法声明
最基本的方法声明包括方法名和方法的返回类型,例如:
float area(){
}
2.方法体
方法声明之后的一堆大括号“{”、“}”以及之间的内容成为方法的方法体。方法体的内容包括局部变量的声明和Java语句,例如:
int getSum(int n){
int sum = 0; //声明局部变量
for(int i = 1;i <= n;i ++){ //for循环语句
sum = sum + i;
}
return sum; //return语句
}
2.5 方法重载
Java中存在两种多态,即重载(Overload)和重写(Override),重写是和继承有关的多态。
方法重载是多态性的一种,例如,你让一个人执行“求面积”操作时,他可能会问你求什么面积?所谓功能多态性,是指可以向功能传递不同的信息,以便让对象根据相应的消息来产生的行为。对象的功能通过类中的方法来体现,那么功能的多态性就是方法的重载。方法重载的意思是,一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。在下面的Area类中,getArea方法是一个重载方法。
class Area {
float getArea(float r){
return 3.14f * r * r;
}
double getArea(float x,int y){
return x * y;
}
float getArea(int x,float y){
return x * y;
}
double getArea(float x,float y,float z){
return (x * x + y * y +z * z) * 2.0;
}
}