类
- 类是一类具有相同属性和行为的对象的集合,是抽象概念(模板/蓝图)
- 对象所具备的共同属性和行为都定义在类之中
对象
- 类的一个具体实例,有了对象之后,成员属性才有具体值
- 有了类才能有对象
- 类名称 引用名称 = new 类名称(参数);
- 成员变量都在对象的堆内存中存储
构造方法
- 和类名称相同,没有返回值的特殊成员方法
- 构造方法是为了对象产生而存在的,构造方法是为了对象进行成员变量的初始化操作
- 构造方法若在类中没有定义,编译器会生成默认的无参构造,一旦在类中自己提供了构造方法(无论是否有参),则编译器不再产生默认的无参构造!
- 若类中只提供了有参构造Person(String name){} Person per = new Person();//一定出错。当前类中没有无参构造
- 构造方法重载,参数的个数不同(构造方法就是为了成员变量初始化),不同参数的构造方法表示是实例化的变量可能不同
public class Person {
public String name;
public String sex;
public int age;
}
Person() => 所有成员变量都是默认值
Person(String name) => 只给name属性从外部赋值
Person(String name,int age) => 给 name 和 age 属性从外部赋值
this关键字
- this修饰属性,表示直接从当前类中寻找同名变量(this.属性名称)
- this修饰方法
2.1 修饰成员方法语法: this.方法名称(参数);
2.2 修饰构造方法语法: this(构造方法参数);
修饰构造方法语法: this(构造方法参数);
- this调用构造方法只能在构造方法中调用(只有构造方法之间可以相互调用,不能在任何其他方法中调用构造方法)
- 当在构造方法中通过this来调用其他构造方法,这个调用必须写在第一行!!!
- 构造方法之间的相互调用不能成环~~
static
与具体对象无关,和一个类本身相关的内容!!
- static 修饰属性,则该属性为静态变量,直接通过类名称来调用,存储在JVM的方法区,该类的所有对象共享此变量!!!
- 在成员变量前,使用static修饰时,该变量就成为了类属性,和具体对象无关,直接通过类来访问,该类所有对象共享此变量(只要有一个对象改了该属性值,对其他对象都是可见的
- static修饰的方法称为类方法/静态方法,和具体对象无关,通过类名称直接访问(一般工具/公用方法都设置为静态方法,直接通过类名称来访问,不需要产生对象)
- static修饰的属性/方法都称为类的静态域 静态域没有该类对象就能访问,通过类名称来访问
- 在类中,不加static关键字定义的属性或方法称为成员域(必须有对象才能访问)
- static不能修饰一个类,但可以修饰内部类
关于静态变量的说明:
1.static变量只存在于类之中,方法中千万不能定义静态变量!!!
2.静态属性直接通过类名称来访问(推荐的),没有任何该类对象,这个属性也是存在的
3.关于静态变量的存储在JVM的方法区,所有该类对象共享(当类加载到JVM内存之中,静态变量就会在方法区初始化并存储)