一、类的定义
类采用class关键字定义,在类内部可以定义字段和方法。
一般每个文件都只储存一个类,具体方法是打开IJ的src,按鼠标右键选择新建class.
类是自定义的类型,类似于int等类型,可以用来定义变量
定义字段(成员变量),方法如下:
class student{ public String name="恬"; private int age=18; private double score=96; public static String classname="113"; public void show(){ System.out.println("姓名:"+name+" 年龄:"+age+" 得分:"+score+" 班 级:"+classname); } }
上面的class就是关键字,student是类名,里面标红的部分public、private是访问限定符(就是限定了定义的变量或方法的使用范围,具体范围如下图),前四行是成员变量,第五行是定义成员方法。(static是静态成员变量(类成员),不能通过this访问,因为它是依赖于类的,不是依赖于实例变量,就算没有实例变量,也是可以正常使用的)
二、类的实例化
定义好类,使用类定义好的东西需要实例化变量。我们在主函数这样写
public class test { public static void main(String[] args) { student stu1=new student(); stu1.name="糖"; stu1.show(); } }
stu1是我们通过new关键子实例化的变量,用点号访问其中的方法及变量,进行赋值等操作。
三、this引用
this有三个用处:
1、调用构造方法(构造方法:名字必须与类名相同,如public student{},且没有返回值,构造方法可以重载,在对象的生命周期只执行一次。
我们发现局部变量在使用时必须初始化,但是成员变量却不需要赋初值,其实是因为在调用new创建新变量时,自动调用了无参数的构造方法,注意是是无参!!假如在new时传了参,但是并没有在类里面定义赋值的方法,就会报错。而且系统自动帮我们构造方法前提是不能自己写了其他构造方法,否则将不为我们自动提供无参构造方法。
)
(必须放在构造方法的第一条语句,不能在不同的构造方法中形成环)
以下图片演示形成环的错误案例
2、表示当前的成员变量,起区分作用。
3、在成员方法中引用当前对象,是隐式的,当然也可以显化写出来
四、static
依赖类,通过类访问。
public static String classname="123"; //在类中定义的
System.out.println(student.classname); //不用实例化,直接用类调用。当然,实例化再用对象加点号调用也可
静态变量初始化分两种方式:1、就地初始化(定义时直接初始化)2、代码块初始。
代码块有1、普通块{}定义在方法中的代码块
2、静态块static{}定义在类中的代码块,用来初始化静态成员变量
3、构造块{}不加修饰符的代码块,也叫实例代码块,用来初始化实例成员变量
三者的运行顺序为:静态——>普通——>构造
在各种类的相同种类的块按出现先后顺序运行