类的定义
成员变量
- Java会自动初始化成员变量但是不会自动初始化局部变量;
- 可以在定义成员变量是直接初始化,成员变量的作用范围在整个类体
对象的创建和引用的概念
- 在main函数里创建一个对象要使用new语句,new语句创造的东西都在堆内存中,因为堆内存可以动态分配。但是我们实际上是new了一个对该对象的引用变量(在栈内存),他指向堆内存中new出来的对象。堆内存中的对象才是真正的对象。这个引用和c/c++中的指针很类似。
- 用图说明
构造方法
-
构造方法没有返回值,且名字与类名相同,
- 当不写构造方法时,系统会自动添加一个默认构造方法。一旦定义了其他的构造方法,系统就不会添加默认构造方法。
方法重载
- 返回值和名字相同,参数类型或数目不同的两个或多个方法。且编译器不会混淆。
this关键字
- this一般出现在方法的定义中,对哪个对象调用该方法,this就指向这个对象。this是一个引用。可以处理形式参数和成员变量重名的情况:
class Test
{
int a;
int b;
Test(int a,int b) //参数和成员变量重名
{
this.a=a;
this.b=b;
}
}
static 关键字
- static变量存在数据区,哪怕不new对象,static变量也会在数据区存在一份。
- static声明的的变量是该类成员的公共变量。不单独属于某一个对象。只存在一份!
- 即便没有对象也可以用“类名.”来访问静态成员。
- main方法中的static的含义:不用new对象就可以执行main方法。
- 静态方法不能访问非静态成员,非静态成员只能new一个对象来访问。比如在main方法中调用一个类的非静态成员就会出错。
- 非静态方法是针对于每个对象进行调用,必须实例化类的一个对象才能调用非静态方法。