JAVA类的讲解
JAVA类的讲解
类的定义:
类是一种对象的抽象(从具体事物抽出、概括出它们共同的方面、本质属性与关系等,而将个别的、非本质的方面、属性与关系舍弃,这种思维过程,称为抽象)或原形,它定义了该类对象的共同状态和方法。
用户可以使用类的定义来生成类的对象,生成的对象将可以使用该类的所以组件。
类中包含两种内容:
成员(field)域:是存储数据项的标量。成员域也称类的数据成员(data member)。
方法(method):定义了用户可以进行操作,也决定了利用类的对象可以做的事。
类定义中的变量:
类变量(class variable):也称为静态成员变量(staicfle): 在声明时使用关键字static. 只与该类有关,被该类的素有对象共享。 未创建该类的对象时,这些变量仍然存在。
实例变量(instance varible):也称为非静态成员变量(non-static field): 该类型变量与类的每一个实例有关 该类的每个实例都有他自己的变量的副本和赋值。
类定义中的方法:
方法的概念: 是一个自包含的代码块 有自己的名称及可以重复使用的属性 可以根据需要在程序多个不同的地方被执行 可以使用其名字来调用方法 方法可以指定返回值的类型,若没有返回值,则应声明方法的返回对象类型为void
方法的定义:提供了中指定的变量进行的操作。
方法的分类: 实例方法(instance method):只可以在特定的对象中执行。
类方法(class method):使用static进行声明,即使该类没有对象存在也可以执行。类方法不能引用实例变量
实例变量和实例方法只能通过对象的引用来调用,因为在定义中已经和一个特定的对象相关。
类方法的定义:在定义方法的前面加关键字static。
例:
Class xiaoli{
Static int getCount(){
return count;
}
}
这样的方法不能直接引用任何实例变量。因为不存在任何类对象静态方法也能被执行。实例方法可以访问类的任何数据成员,直接使用即可。
构造函数(我们一般也称构造方法)
构造函数:函数名和类名相同,且不指定返回对象的类型,可以有参数,也可以无参数,一个类中可以有多个构造函数。
构造函数的功能:在对象实例化时,系统首先调用构造函数,对生成的对像的实例变量进行初始化,其用系统默认调用。
注意:如果类中没有显示声明的构造函数,则系统会提供一个默认的构造函数,其无参,并且不做任何工作。
this变量
this是java的一个关键字,便是某个对象。
this可以出现在实例方法和构造方法中,但不可以出现在类方法中。
this关键字出现在类的构造方法中时,代表使用该构造方法所创建的对象。
this关键字出现在类的实例方法中 时,代表正在调用该方法的当前对象.
初始化数据成员
初始化快:指定括号中的一个代码快,它在类中的对象生成之前执行
初始化块的分类:
静态初始化:使用static定义的代码块,当类装载到系统时将执行一次。静态初始化块只能初始化的静态数据成员.
非静态初始化块:对每个要生成的对象执行一次,可以初始化类的实例变量。
方法重载(注意:函数返回值不能作为判断重载的条件)
方法重载:在一个类中,用同样的名字定义多个方法.
重载条件:各重载函数的形参列表必须不相同。
签名:方法的名称、形参的类型及其顺序统称为签名。类中的每个方法的签名必须唯一,编译器将以此判断调用那一个函数。
重写方法
父类与子类之间的多态性,对父类的函数进行重定义。
在子类中定义某种方法与父类中的某一方法具有相同的名称和参数,我们就说该方法被重写或者覆盖了。
判断重写:
参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。
返回的类型必须一直与被重写的方法返回类型相同。
访问修饰符的限制要大于被重写方法的访问修饰符。
重写方法只能存在于继承关系中,重写方法只能重写父类非私有的方法。
重写要求参数签名必须一致。
访问属性
Default(无妨问属性): 来自同一个包中任何类的方法访问.
public: 来自任何类的方法访问。
private: 只允许该类的内部的方法访问。
protected: 来自同一包中任何类以及该类的任何地方的任何子类的方法访问.
当创建一个新的对象时(对该类实例化也就是我们常说的new一个对象),就会为该类对象及其成员分配空间,同时对成员变量进行初始化