一、类与对象的概念
类:构造对象的模板和蓝图;类是抽象的概念集合,表示的是一个共性的产物,类之中定义的是属性和行为(方法)。 对象:对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象。 (理解:我们将类想象成制作小甜饼的切割机,将对象想象为小甜饼;类是对象的模板,对象是类的实例。类只有通过对象才可以使用,而在开发之中应该先产生类,之后再产生对象。类不能直接使用,对象是可以直接使用的。用一句话来形象的概括:类好比是一张需要填写的空表格模板,对象就好比是一张填写好的表格。) 创建类的实例:由类构造对象的过程。 实例域:对象中的数据 方法:操纵数的过程。
二、类之间的关系(三种)
1)依赖("usea-a"):一个类的方法操纵另一个类的对象,就称之为一个类依赖于另一个类。 2)聚合("has-a"):一个类的对象包含一部分另一个类的对象。 3)继承("is-a"):类A由类B继承而来,就是说明类A包括类B的所有方法,而且类A还具有其他的一些额外功能。
三、类和对象的定义
1)类的定义
首先定义一个简单的类: public class Dog{ String breed; int age; String color; void barking(){ } void hungry(){ } void sleeping(){ } }
一个类可以包含以下类型变量:
- 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
- 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
- 类变量:类变量也声明在类中,方法体之外,但必须声明为static类型。
每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。
在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
如下所示:
public class Puppy{
public Puppy(){
}
public Puppy(String name){
// 这个构造器仅有一个参数:name
}
}
类体由两部分构成:一为实例域(或成员变量)定义;二为方法定义。2)对象的定义
对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:
- 声明:声明一个对象,包括对象名称和对象类型。
- 实例化:使用关键字new来创建一个对象。
- 初始化:使用new创建对象时,会调用构造方法初始化对象。
下面是一个创建对象的例子:
public class Puppy{
public Puppy(String name){
//这个构造器仅有一个参数:name
System.out.println("小狗的名字是 : " + name );
}
public static void main(String []args){
// 下面的语句将创建一个Puppy对象
Puppy myPuppy = new Puppy( "tommy" );
}
}
3)域和实例域
域:翻译成英文就是field,也就是我们常说的字段,或者说是属性。所谓域,其实是“field”的翻译
实例域:就是实例("object" )的"field"。包括实例域和静态域,静态域又叫类域,即java对象中的数据(instance field) ,也就是类的字段和类的属性
3)final实例域
final修饰符大都应用于基本类型域,或不可变类的域,如: private final String name;// 将name域声明为final,在对象构建之后,这个值将不会被修改,既没有setName方法
4)静态域
如果将静态域定义为static ,那么每个类中只有一个这样的域,而每一个对象对于所有的实例域都有自己的一份拷贝本。例如,Employee类中有一个实例域Id和一个静态域nextId,如下所示:
Class Employee { private static int nextId = 1; private int id; }