JAVA基础教程DAY2-类的构造方法及类的实例化调用

下面我们来讲如何建好类以及如何将它实例化

首先建立一个学生类Student,里面要求有属性,学号、年龄为int型,姓名,方法有学习study
在Student.java文件当中,我们完成以上代码为
 

public class Student {
        int age=17;
        int sno=2121;
        String name="mike";
        String study(){
            return name+" is studying";
        }
}

上面代码可以实现基本要求,我们通常不会在类当中进行测试,所以我们会在新建测试类,格式为类名后加Test,我们新建StudentTest.java
 

public class StudentTest {
    public static void main(String[] args){
        Student stu1 = new Student();
        System.out.println(stu1.age);
        System.out.println(stu1.sno);
        System.out.println(stu1.study());
    }
}

我们运行StudentTest.java得到下面的结果
 

17
2121
mike is studying

对象是根据类创建的。在Java中,使用关键字 new 来创建一个新的对象。创建对象需要以下三步:

  • 声明:声明一个对象,包括对象名称和对象类型。
  • 实例化:使用关键字 new 来创建一个对象。
  • 初始化:使用 new 创建对象时,会调用构造方法初始化对象。

通过已创建的对象来访问成员变量和成员方法,如下所示:
/* 实例化对象 */
Object referenceVariable = new Constructor();
/* 访问类中的变量 */
referenceVariable.variableName;
/* 访问类中的方法 */
referenceVariable.methodName();
所以说我们可以看到我们通过这一句,Student stu1 = new Student();完成了对学生类的实例化

那这句是如何构成的?首先Student为类名称,stu1为我们自己定义的学生1,new是开辟内存空间,后面的Student()则是构造方法,我们可以类比变量的定义,类的实例化类似于定义一个变量,

int a = 10;
Student stu1 = new Student();

这句话定义了一个变量a并且在内存当中开辟了10的存储空间,int为变量a的类型,Student也同样为对象stu1的类型,等号后面的同样都是对于内存大小的处理,这样理解比较容易。

构造方法

每个类都有构造方法。如果没有显式地为类定义构造方法,Java 编译器将会为该类提供一个默认构造方法。在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。

在Student.java当中

public Student(){}

这句构造方法其实是隐藏的,所以说我们在测试类当中可以正常使用
那现在有个问题,如果说我们要求定义两个学生,要求不同的属性值,我们的构造方法则显得死板,我们如何实现?

方法的重载

解决方法是创建另一个有相同名字但参数不同的方法,这个过程我们称为方法的重载

public class Student {
        int age;
        int sno;
        String name;
        public Student(){}
        public Student(String name){
                this.name=name;
        }
        String study(){
            return name+" is studying";
        }
}

同样的,这里我们也会养成先写一个默认构造方法的习惯,重载的构造方法一定要参数的类型不同或者个数不同。

在测试类当中的调用

public class StudentTest {
    public static void main(String[] args){
        Student stu1 = new Student();
        Student stu2 = new Student("neo");
        System.out.println(stu1.study());
        System.out.println(stu2.study());
    }
}
静态变量

被 static 修饰的成员变量叫做静态变量,也叫做类变量,说明这个变量是属于这个类的,而不是属于是对象,没有被static修饰的成员变量叫做实例变量,说明这个变量是属于某个具体的对象的。静态变量可以直接通过类名.静态变量名称调用,虽然也能通过对象来访问静态变量和方法,但为了可读性,方便分辨静态变量,应该通过类名来调用。

静态方法

被 static 修饰的成员方法叫做静态方法,也叫做类方法,静态方法可以直接通过类名.静态方法名称调用(同样也可以用对象.方法的方式),不属于对象的。

同样也有静态常量,这里不做赘述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Doomer_0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值