JAVA 构造方法 静态变量 静态方法
一、构造方法
作用:
1.出对象的属性(成员变量)进行初始化
写法:
1.构造方法的方法名与类名相同(大小写必须一样)
2.没有返回值类型,(viod都不用写)
3.没有返回值(没有return)
二、构造方法的注意事项
1.如果你没有写构造方法,那么系统会给你自动提供一个无参的构造方法
2.如果你写了一个有参的构造方法,那么系统不会再自动提供一个无参的构造方法
3.如果你写了一个有参的构造方法,那么建议你把无参的构造方法也写上
举例:
class Person{
String name ="李四";
int age = 208;
// 构造方法(无参数构造方法)
public Person() {
name = "张三";
age = 18;
System.out.println("我是一个构造方法");
}
//写一个有参数的构造方法
public Person(String name, int age) {
//给对象的成员变量赋值
this.name = name;
this.age = age;
}
}
三、函数的重载:
参数不同,类型不同,顺序不同
举例
举个现实生活中的实例。假如你是个木工,我要让你制作桌子(返回值)。然后,我给了你紫檀木,你就可以制作一张紫檀桌子;我给了你黄花梨,你可以做黄花梨的桌子。这些不同材质的木料,就是参数。返回的都是桌子,但是具体使用哪个函数,就根据传入的木料不同来决定的。所以,可以根据所传递进来的不同参数,决定具体调用哪个函数。提高了函数使用的灵活性。
四、计算矩形
// 起类名的时候 尽量不要与系统重名
class Rect{
private int height; //高
private int weight;//宽
//无参构造方法
public Rect() {
}
//有参构造方法
public Rect(int height,int weight) {
this.height = height;
this.weight = weight;
}
//set/get方法
public void setHeight(int height) {
this.height = height;
}
public int getHeight() {
return this.height;
}
public void setWeight(int weight) {
this.weight = weight;
}
public int getWeight() {
return this.weight;
}
//成员方法
//计算周长((高+宽)*2)
//注意 不用给周长方法写参数,
//谁调用这个周长方法 计算的就是谁的周长
public int getLength() {
return (this.height+this.weight)*2;//计算周长
}
public int getArea() {
return this.height * this.weight;//计算面积
}
//调用main函数
public static void main(String[] args) {
Rect rect = new Rect();
rect.setHeight(4);
rect.setWeight(5);
System.out.println(rect.getArea());
System.out.println(rect.getLength());
}
五、静态变量
静态变量的特点:
1.随着类的加载而加载,不依赖对象,只依赖类
2.创建优先于 对象 存在
3.是类创建出来的对象, 共享的部分
4.可以用类名 去调用
静态变量的好处:节省内存空间
静态变量和成员变量的区别:
1.所属不同
成员变量:成员变量属于对象,又叫对象变量(实例变量)
静态变量:属于类的 又叫类变量
2.内存中的存储位置不同
成员变量:存储在堆内存中
静态变量:存储在方法区的静态区中
3.加载到内存中的时机不同(生命周期不同)
成员变量:随着对象的出生而出生,随着对象的死亡而死亡
静态变量:随着类的加载而存在
4.调用方法不同
成员变量:只能使用 对象 区调用 对象.成员变量
静态变量:可以用对象调用但是不推荐
一般使用类名区调用 类名.静态变量
内存表现步骤:::
1.类加载到方法区
2.加载到方法区的同时,静态变量被加载到方法区的静态区
3.main 函数入栈区
4.在堆内存中 创建 对象
5.把地址赋值给main 函数 对象保存
6.main 函数出栈
7.程序结束
附图:
六、静态方法
静态方法调用:
如果仅仅需要使用类中成员方法,这时可以把成员方法写成静态方法,在调用的事后,直接使用类名去调用,方便。一般工具类都是使用静态方法。
查看系统类Math 发现,系统把构造方法私有化,私有化后,外界无法创建,Math这个类的对象。
什么事后可以构造方法私有化?
当一个类所有的属性 和 方法 都是静态的
可以私有化构造方法,因为根本就不需要对象。