构造方法:
作用:对对象的属性(成员变量)进行初始化。
写法:
1,构造方法的方法名与类名完全相同(大小写必须一样)
2,没有返回值类型(void可以不写,也不用写)
3,没有返回值,(没有return)
//测试类
public class Demo1{
public static void main (String[] agrs){
Person p = new Person();
p.SayHi();
Person p2 = new Person("kang",100);
p2.sayHi();
}
}
class Person{
String name;
int age;
public Person(){ //无参数的构造方法 注意:不管你的构造方法有没有参数无参的构造方法自己一定要写上。因为你不写 在你想用的时候可能系统就不给你用了 。
name = "kang";
age = 18;
System.out.println("我是一个构造方法");
}
//写一个有参数的构造方法
public Person (String name ,int age){
//给对象的成员变量赋值
this.name = name;
this.age = age;
}
public void sayHi(){
System.out.println(name+"----"+age)
}
}
构造函数
构造函数的注意事项
1,如果任何构造函数都没有写 那么系统会给你提供一个无参的构造函数
2,如果你写了有参的构造函数那么系统默认的构造函数将 不会给你在提供使用
3,所以如果你想写有参数的构造函数 建议自己在写一个无参的构造方法。
4,给成员变量的初始化
重点
写一个构造方法的格式以及顺序。
接下来我们举一个例子
需求
创建一个长方形的类
计算长方形的周长和面积
写一个构造方法的顺序
构造方法
set/get方法
成员变量私有化
计算周长和面积是成员方法
//创建一个类
public class Demo03{
public static void main (String[]args){
//开辟一个新空间
Rect number = new Rect();
//初值
number.setHeight1(10);
number.serWidth(20);
//调用方法
number.getname();
number.getnumber();
}
}
//在创建一个类 注意:起类名的时候尽量不要重复 尤其是不要用系统的关键字
class Rect{
private int height ;// (长)使用private成员变量私有化
private int width ; //(宽)
//写一个构造方法
publicRect(){ //无参的构造方法
}
public Rect(int height ,int width){ //有参的构造方法
this.setHieght1(height);
this.setWidth(width);
}
// set / get 方法
public void setHeight1(int height){
this.setHeight1(height);
}
public int getHeight(){
return this.height;
}
//成员方法
public int getLength(){ //计算周长
return ( this,getHeight()+this.getWidth())*2;
}
public int getArea(){
return this。getHeight()*this.getWidth();
}
//返回值
public int getWidth(){
return width;
}
public void setWidth(int width){
this.width = width;
}
public void setHeight(int height){
this.height = height;
}
}
静态变量
静态变量也叫类变量通常下我们都叫他类变量
类变量的特点:
1,随着类加载而加载 (也可以理解为随着类的产生而产生,随着类的消亡而消亡)
2,类变量的比对象要创建的早所以说类变量和对象没有什么直接的关系。类比那辆不依赖对象,因为类变量被加载的时候,对象还没有被创建。
3,类变量的作用是 通过类创建的对象 可以通过静态储存来共享部分空间
4,可以使用类名调用
5,好处:节省内存
类变量 和成员变量的区别是什么?
1,所属不同
类变量:直接属于类,随着类是加载而加载。
成员变量:直属对象,对象所创建出来的变量。
2,内存中储存的位置不同
类变量:储存在方法区的静态内存中。
成员变量:储存在堆内存中。
3,加载到内存的时机不同
类变量:随着类的加载而加载
成员变量:随着对象的创建而创建
4,调用方法不同
类变量:可以在对象中调用但是我们一般不再对象中调用,我们用类名调用
成员变量:只能使用对象去调用。
接下来我们随便写一个例子
然后画个图来看一下类变量在内存中加载的步骤
public class Demo01{
public static void main(String[]agrs)
Girl g1 = new Girl();
g1.name = "小高";
g1.country = "日本"
g1,sayHi();
Girl g2 =new Girl();
g2.name = "小煜";
g2.country = "日本";
g2.sayHi();
}
//写一个类
class Girl{
//成员变量
String name; //姓名
static String country;//家乡
public void sayHi(){
}
}