总结所有的变量怎么访问,总结所有的方法怎么访问
总结一下到目前为止在一个类中都接触过什么了
类体 {
实例变量;
实例方法;
静态变量;
静态方法;
构造方法;
静态代码块;
实例语句块;
方法() {
int i = 100;
}
}
public class Review { //类
// 类加载机制中,是这样的:在程序执行之前,凡是需要加载的类全部加载到JVM当中
// 先完成加载才会执行main方法
static {
System.out.println("Review类加载时执行");
}
//入口
//静态方法
public static void main(String[] args) {
//局部变量
int i = 100;
//完成一个对象的一连串动作
//一个学生在教室先学习,学习完成之后去餐厅吃饭
Student s1 = new Student();
//先学习,所以调用学习的实例方法
s1.study
Student s2 = new Student();
//学生类
class Student {
static {
System.out.println("Student类加载时执行");
}
//学号
private int no;
//姓名
private String name;
static String job = "学习";
{
System.out.println("实例语句块,构造方法执行一次,这里就执行一次");
}
//构造方法
public Student() {
//假设调用无参数的构造方法,默认创建的学生学号是100,名字是zhangsan
this(100, "zhangsan"); //this()在这里也是用了
}
public Student(int no, String name) {
this.no = no; //这里使用了this
this.name = name;
}
//封装
//setter and getter方法
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setNo(int no) {
this.no = no;
}
public int getNo() {
return no;
}
//提供两个实例方法
public void study() {
//私有的是可以在本类中访问的,在其他类中必须使用set和get方法
System.out.println(this.name + "is working hard");
System.out.println(name + "is working hard");
//在实例方法中调用本类其他的实例方法
System.out.println(this.getName() + "is working hard");
System.out.println(getName() + "is working hard");
//方法实行到此处表示学习完成了,去吃饭
this.eat();
//这里的this可以省略
//java编译器会自动在eat()方法之前添加“this.",因为检测到eat()方法是一个实例方法
}
public void eat() {
System.out.println(this.getName() + "is eating");
//调用静态m1()方法
//静态方法使用“类名.”方式访问
Student.m1();
//类名.可以省略吗?可以,因为都在同一类中
//java编译器会自动在m1()方法之前添加“类名.",因为检测到m1()方法是一个静态方法
m1();
}
//提供两个静态方法
public static void m1() {
System.out.println("Student's m1 method is executed");
}
public static void m2() {
System.out.println("Student's m2 method is executed");
System.out.println("工作性质:" + job);
//编译器检测到job是一个静态变量,所以这里会自动在job前添加:Student.
System.out.println("工作性质:" + Student.job);
程序再怎么变化,万变不离其宗,有一个固定的规律:
所有的实例相关的都是先创建对象,通过”引用.“来访问
所有的静态相关的都是直接采用“类名.“来访问
大结论:
只要负责调用的方法a和被调用的方法b在同一个类当中:
this. 可以省略
类名. 可以省略
public class Review02 {
public void m1() {}
public void m2() {}
public static void m3() {}
public static void m4() {}
public static void main(String[] args) {
m1();
m2();
m3();
m4();
}
哪个方法可以访问?
分析:
第一步:main方法是静态的,JVM调用main方法的时候直接采用的是”类名.“的方式
所以main方法中没有this
第二步:m1() 和 m2() 方法是实例方法,按照Java语法规则来说,实例方法必须先new对象,通过”引用.“的方式访问
编译器会自动识别m3()静态方法,结果是:Review02.m3();
m4() 同理
那么怎么调用m1() 和m2()呢 --> 在实例方法中,调用m1()和m2()
public void x() {
m1();
m2();
}
public class Review02 {
public void m1() {}
public void m2() {}
public static void m3() {}
public static void m4() {}
public static void main(String[] args) {
m1();
m2();
m3();
m4();
}
仅供学习使用,内容版权归B站视频老师所有。