class定义类 public class Person{}
使用类,需要创建类的对象 Person p = new Person()
在Java中,类文件是以.java为后缀的代码文件,在每个类文件中最多只允许出现一个public类,当有public类的时候,类文件的名称必须和public类的名称相同,若不存在public,则类文件的名称可以为任意的名称(当然以数字开头的名称是不允许的)。
在类内部,对于成员变量,如果在定义的时候没有进行显示的赋值初始化,则Java会保证类的每个成员变量都得到恰当的初始化:
对于 char、short、byte、int、long、float、double等基本数据类型的变量来说会默认初始化为0(boolean变量默认会被初始化为false);
对于引用类型的变量,会默认初始化为null。
如果没有显示地定义构造器,则编译器会自动创建一个无参构造器,但是要记住一点,如果显示地定义了构造器,编译器就不会自动添加构造器。
类分为两种:1.抽象类
抽象类只能用来派生子类,不能创建抽象类的对象。如:
abstract class A
{
abstract void f()
}
//派生子类
class B extends A
{
void f()
{}
}
如果一个类包含抽象方法,那些个类必须定义成抽象类,但抽象类可以不包含抽象方法。
2.非抽象类
非抽象类可以派生子类,也可以创建非抽象类的对象。如:
class A
{
void f()
{}
}
//派生子类
class B extends A
{
void g()
{}
}
A a1=new A()
a1.f()
无论抽象类还是非抽象类都可以包含静态方法和静态属性。类的静态的方法和属性不需要创建对象,通过类名就可以使用,如:
//A是抽象类
abstract class A
{
void static f()
{}
static int n=100
}
//引用静态方法
A.f()
//引用静态属性n
int r=A.n
//B是非抽象类
class B
{
void static f()
{}
static int n=100
}
//引用静态方法
B.f()
//引用静态属性n
int r=B.n
而对象是类的实例化,类是对象的模板。可以用非抽象类来创建对象,然后使用类的实例方法和实例属性,如:
class A
{
void f()
{}
int n=1
}
//创建一个类A的对象
A a1= new A()
//使用实例方法和属性
a1.f()
int r=a1.n
此外,静态属性是属于类的,只有一个拷贝,被类的所有对象所共享。而实例属性是属于对象的,每个对象都有自己的一个实例属性的拷贝,彼此之间相互独立,互不影响。