1、this
- this代表实例(或对象),也就是new的时候的实例
- this.属性:使用属性
- this.函数;调用方法
大部分时候我们在类中不需要不使用this,因为默认会有this加在属性或函数的前面,只是不显示不出来。如果方法中有局部变量和成员变量同名则必须哟啊使用this。
代码:
package org.example.面向对象;
public class PersonO {
private String name;
private int age;
public String getName(){
//return name;//这里隐藏了this
return this.name;//和上面的写法没区别
}
public void setName(String name){
this.name=name;//这里必须使用this,不然无法区分局部变量name
}
public static void main(String[] args){
PersonO p=new PersonO();
/*
*
* 这里的p就是上面的this
* 每个不同的实例,对应不同的this
* 所以this就是实例
* */
p.getName();//调用getName()函数
}
}
2、static
- static关键字修饰的属性和方法,指的是静态属性和静态方法,如:private static int age'
- 被static修饰的属性和方法为静态变量也成为类的变量,不是实例的变量,不能使用this关键字
- static是类的属性,static方法是类的方法,不需要实例化即可使用,直接类.属性或者类》方法便可使用。
- static方法可以调用其他static方法,但是不可以调用非static方法,因为非static方法是需要this的,但是static不可以使用this。
- 非static方法可以调用static方法
代码:
package org.example.面向对象;
public class PersonO {
/*static例子*/
private String name;
private static int age;
//非静态方法,里面会有this
public void sing(){
name="p1";
age=10;
}
//静态方法里面没有this,所以不能在里面调用非静态方法
public static void dance(){
// name="p";//这里没有默认的this所以会报错
System.out.println("dance");
}
/*
*
* 主方法就是static所以我们调用非static方法的时候必须new实例出来才能调用*/
public static void main(String[] args){
//静态的,所以可以直接使用不需要实例
dance();
//静态的
System.out.println(age);
PersonO p=new PersonO();
//非静态的,必须实例
p.name="pp";
//实例也可以使用静态的属性
p.age=100;
PersonO p2=new PersonO();
p2.age=11;
System.out.println("p2.age"+p2.age);
}
}