1,类的定义
描述实体的抽象概念,属性及行为相似的对象可以归成一个类。
在软件中,类就是一个模板,它定义了通用于一个特定种类的所有对象的状态(变量)和行为(方法)。类是创建对象的模板,对象是类的实例。
声明形式:
[public] [abstract | final] class 类名称 [extends 父类名称] [implements 接口名称列表] {
数据成员声明及初始化;
方法成员声明及方法体;
}
关键字:
class:表明其后声明的是一个类。
extends:如果所声明的类是从某一父类派生而来,那么,父类的名字应写在extends之后
implements:如果所声明的类要实现某些接口,那么,接口的名字应写在implements之后
类修饰符:可以有多个,用来限定类的使用方式
public:表明此类为公有类
abstract:指明此类为抽象类
final:指明此类为终结类
类声明体
数据成员声明及初始化
可以有多个
方法成员声明及方法体
可以有多个
数据成员
表示Java类的状态
声明数据成员必须给出变量名及其所属的类型,同时还可以指定其他特性
在一个类中成员变量名是唯一的
数据成员的类型可以是Java中任意的数据类型(基本类型,类,接口,数组)
方法成员
定义类的行为
一个对象能够做的事情
我们能够从一个对象取得的信息
可以没有,也可以有多个;
分为实例方法和类方法(静态方法)
类成员的访问控制:
public:这些成员能被所有的类访问
protected:这些成员只能被类本身,派生类或者同一个包下的类访问。
private:这些成员除了类本身外任何类不允许访问。
default:不加任何访问控制保留字,这些成员只能被类本身或同一个包下的类访问。
2,类的特殊成员
构造方法:构造方法的名字和类名相同,并且没有返回值(连void都不允许)。构造方法主要用于为类的对象定义初始化状态。我们不能直接调用构造方法,必须通过new关键字来自动调用,从而创建类的实例。Java的类都要求有构造方法,如果没有定义构造方法,Java编译器会为我们提供一个缺省的构造方法,也就是不带参数的构造方法。
静态数据成员:静态成员以static关键字修饰,如:
Class Person{
staticint name;
public static void getName(){……};
}
静态方法和静态变量是属于某一个类,而不属于类的对象,不管对象有多少,静态成员在内存中只存在一份拷贝,所有对象共享同一份静态成员。
静态方法和静态变量的引用可以直接通过类名引用,而不需要经过类的实例化。如:Person.name; Person.getName();
在静态方法中不能调用非静态的方法和引用非静态的成员变量。反之,则可以。
final数据成员:final数据成员类似于C++中的const数据,以及C中宏定义。final数据成员一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变,但引用变量所指向的对象中的内容还是可以改变的。
final方法成员:派生类只能从父类继承final方法,但是不能覆盖该final方法。当一个方法提供的功能已经满足要求,不需要再进行扩展,或者不想被子类覆盖时,可以将方法声明为final。
抽象方法和抽象类
在类中没有方法体的方法,就是抽象方法。
含有抽象方法的类,即为抽象类。
如果一个子类没有实现抽象基类中所有的抽象方法,则子类也成为一个抽象类。
我们可以将一个没有任何抽象方法的类声明为abstract,避免由这个类产生任何的对象。
构造方法、静态方法、私有方法、final方法不能被声明为抽象的方法