1,定义规则
定义类
限定符 class 类名称{
属性/静态属性;
构造方法(必须要有,如果没有,系统默认定义一个无参构造);
方法/静态方法;
}
(1)属性
限定符 变量类型 变量名
(2)构造方法
限定符 类名称(形参列表){执行语句}
(3)方法
限定符 返回值类型 方法名称 (形参列表){执行语句}
2,实例化对象的语法
最常见创建对象的方法是使用new语句
Student student = new student();
(1)new 关键字,计算对象内存大小,在堆中申请内存空间,把空间都初始化为0X0;
(2)执行构造方法 对属性进行初始化;
(3)把对象的引用赋值给一个引用变量;
3,访问对象属性或调用对象的方法
(1)在同一个类中访问对象和调用对象的方法
访问属性 this.属性名
调用对象 this.方法名称 (实参列表)
(2)在其他类中访问对象或调用对象的方法
访问属性 对象的引用.属性名
Person p= new person(); p.name;
new Person().name;
调用对象 对象的引用 . 方法名称(实参列表)
Person p = new person(); p.toString();
new Person().toString();
这里要注意:一个类中只能遇一个public类,该类的名称必须与类名称一致;
一个类只会生成一个class字节码文件
4,This关键字的作用
(1)可以在构造方法中调用其他构造方法,必须出现在第一行
(2)代表该方法被调用时当前对象的引用
我们必须知道:在静态方法(静态上下文)中,无法使用This关键字,因为没有一个隐式的对象和该方法绑定;
1)不能访问普通属性
2)不能调用普通方法
5,面向对象的三大特征
封装,继承,多态
6,理解类和对象的内存模型
类信息存在 方法区
属性信息 堆区
7,访问修饰符
在Java语言中有4中访问修饰符:package(默认)、private、public和protected。
1。package是默认的保护模式,又加做包访问,没有任何修饰符时就采用这种保护模式。包访问允许域和方法被同一个包内任何类的任何方法访问.(包内访问)。
2。private标识得访问模式,表示私有的域和方法只能被同一个类中的其他方法访问,实现了数据隐藏;必要时,可以通过方法访问私有变量.(类内访问)。
3。public修饰符用于暴露域和方法,以便在类定义的包外部能访问它们。对包和类中必要的接口元素,也需要使用这个级别;main()方法必须是public的,toString()方法也必须是public的。一般不会用public暴露一个域,除非这个域已经被声明为final。(跨包访问)。
4。protected修饰符提供一个从包外部访问包(有限制)的方法。在域和方法前增加protected修饰符不会影响同一个包内其他类的方法对它们的访问。要从包外部访问包(其中含有protected成员的类),必须保证被访问的类是带有protected成员类的子类。也就是说,希望包中的一个类被包之外的类继承重用时,就可以使用这个级别。一般应该慎用。(包中类被包外类继承慎用)。
8, 属性初始化
1 .属性初始化:(发生在对象实例化时)
(1)定义时初始化
(2)构造代码块
(3)在构造方法中初始化
2 . 静态属性的初始化:(发生在类被加载时)
(1)定义初始化时
(2)静态构造代码块
public class A {
A() {
a = 30;
}
{
a = 0;
}
int a = init();
{
a = 20;
}
int init() {
return 10;
}
static {
staticA = 100;
}
static int staticA = staticInit();
static {
staticA = 300;
}
static int staticInit() {
return 200;
}
public static void main(String[] args) {
A p = new A();
A q = new A();
}
}