1,类和对象
在面向对象的概念当中,类(class)是既包括数据又包括作用于数据的一组操作的封装体。
类的数据 称为成员变量,类对数据的操作 称为成员方法。成员变量反映类的状态和特征,成员方法反映类的行为和能力。类的成员变量和方法统称为类的成员。
类是用来定义对象的模板。对象(Object)是类的实例(instance)。
对象是动态的,拥有生命周期,都会经历一个从创建、运行到消亡的过程。对象与类的关系就像变量与数据类型一样。
类的实现包括两部分:类声明和类体。基本格式为:
class 类名 (类声明)
{……
类具体内容……} (类体)
类体由两部分构成:变量的定义和方法的定义
变量定义的部分所定义的变量称为类的成员变量,在整个类内都有效。他又分为:实例成员变量(实例变量)和 类成员变量(类变量)
class dog
{float x; //x是实例变量
static int y; //y是类变量,用修饰符static说明的成员变量是类变量。
……
}
方法的定义部分所定义的变量 和 方法的参数 称为类的局部变量,只在定义它的方法内有效。变量的名字如与成员变量相同,成员变量在这个方法内暂时失效。
这时如果想在该方法内使用成员变量,必须使用关键词this。
方法可分为实例方法和类方法。注意:实例方法能对类变量和实例变量操作,而类方法只能对类变量进行操作。一个类中的方法可以相互调用,但静态方法只能调用静态方法,不能调用实例方法。
class Tom
{int x=98,y; //x,y这里均是实例变量
void f() //方法f
{int x=3; //局部变量x=3与实例变量x=98重名
y=x; //y得到的值是3,不是98。如果方法f中没有int=3;语句,y的值将是98。
}
}
--------
class Jerry
{float x,y,z;
void g(float z) //方法的声明部分,g为方法名, void为方法的返回类型,方法的返回类型可以是任意java数据类型,房不需要返回数据时,返回类型必须是void。float z为方法的参数,用逗号隔开的一些变量声明,可以是任意java数据类型。 返回类型 方法名(参数数据类型 参数名,……){方法体}
{float x=1,y=23; //方法体
this.x=x; //x=1
this.y=y; //y=23
this.z=z; //this.x,this.y,this.z分别代表成员变量x,y,z
}
}
对象
1、创建对象 包括:对象的声明、为对象分配内存
一个类通过使用new运算符可以创建多个不同的对象,这些对象将被分配不同的内存空间。准确说是:不同的对象的实例变量将被分配不同的内存空间,如果类中的成员变量有类变量,那么所有的对象的这个类变量都分配给相同的一处内存,改变其中一个对象的这个类变量会影响其他对象的这个类变量。即对象共享类变量。
当用类创建了一个对象之后,该对象可以通过“.”运算符访问类分配给自己的变量和类中的方法。但访问有一定限制,类体中通过使用修饰符private、privateprotected、protected和public来说明成员变量的访问权限。
2、类的继承
继承是一种由已有的类创建新类的机制。利用继承,我们可以先创建一个共有属性的一般类,根据该一般类再创建具有特殊属性的新类。新类继承一般类的状态和行为,并根据需要增加它自己的新的状态和行为。由继承而得的类称为子类,被继承的类称为父类(超类)。Java不支持多重继承(子类只能有一个父类)。
例如:
class Students extends People
{
……
}
3、接口
Java不支持多重继承,为了克服单继承的缺点,Java使用了接口,一个类可以实现多个接口。interface
接口体中只进行方法的声明,不许提供方法的实现。如:
interface Printable
{final int MAX=100; //
void add();
float sum(float x,float y);
}
一个类通过使用关键字implements声明自己使用一个或多个接口。如果使用多个接口则用逗号隔开接口名,如:
class A implements Printable,Addable
如果一个类使用了某个接口,那么这个类必须实现该接口的所有方法,即为这些方法提供方法体。