一、static关键字
1.static关键字是静态的【类名访问】
static关键字可以修饰变量--被static修饰的变量是静态成员变量【类变量】
static关键字可以修饰方法--被static修饰的方法是静态方法【类方法】
2.本类中的构造方法和实例方法中访问静态成员变量和静态方法,默认类名.变量/方法,也可以this.变量/方法,类名和this可以省略
3.本类中的静态方法中可以访问静态成员变量和静态方法,默认类名.变量/方法,类名可以省略
4.静态方法中不能有this,也不能使用实例变量和实例方法。
public class JingTaiClass {
/*
static是静态的【类名访问】
被static修饰的变量叫静态成员变量【类变量】
被static修饰的方法叫静态方法【类方法】
*/
//声明一个静态成员变量
public static String name = "静态成员变量";
//声明一个静态方法
public static void staticMethod(){
System.out.println("我是静态方法");
}
/*
1.本类中的实例方法和构造方法,都可以访问静态成员变量和静态方法,
默认类名.变量名称/静态方法,也可以用this.变量名称/方法,类名和this都可以省略
2.静态方法可访问本类中的其他静态方法,用类名.其他静态方法,类名可以省略
3.静态方法中不能出现this. 也不能访问实例变量和实例方法
*/
//定义一个构造方法
public JingTaiClass(){
//在构造方法中访问静态成员变量
System.out.println("构造方法,用类名访问本类中的静态成员变量===="+JingTaiClass.name);
System.out.println("构造方法,用this.访问本类中的静态成员变量===="+this.name);
System.out.println("构造方法,省略this./类名.访问本类中的静态成员变量===="+name);
//在构造方法中访问静态方法
JingTaiClass.staticMethod();
this.staticMethod();
staticMethod();
}
//定义一个实例方法
public void shiLi(){
//在实例方法中访问静态成员变量
System.out.println("实例方法,用类名访问本类中的静态成员变量===="+JingTaiClass.name);
System.out.println("实例方法,用this.访问本类中的静态成员变量===="+this.name);
System.out.println("实例方法,省略this./类名.访问本类中的静态成员变量===="+name);
//在实例方法中访问静态方法
JingTaiClass.staticMethod();
this.staticMethod();
staticMethod();
}
//定义一个静态方法
public static void jingTai(){
//在静态方法中访问静态成员变量,静态方法中不能使用this
System.out.println("实例方法,用类名访问本类中的静态成员变量===="+JingTaiClass.name);
System.out.println("实例方法,省略类名.访问本类中的静态成员变量===="+name);
//静态方法中访问其他静态方法
JingTaiClass.staticMethod();
staticMethod();
}
}
5.其他类的方法中,也可以访问静态成员变量和静态方法,默认用 类名.静态成员变量/静态方法,也可以用 对象.静态成员变量/静态方法 访问
public class JingTaiClass1 {
//声明一个静态成员变量
public static String name = "静态成员变量";
//声明一个静态方法
public static void staticMethod(){
System.out.println("我是静态方法");
}
}
public class JingTaiClass2 {
//定义一个静态方法
public static void jingTaiMethod(){
//访问JingTaiClass1类中的静态成员变量
System.out.println("用类名,访问JingTaiClass1类中的静态成员变量 === "+JingTaiClass1.name);
//创建JingTaiClass对象
JingTaiClass1 jingTaiClass1 = new JingTaiClass1();
System.out.println("用对象,访问JingTaiClass1类中的静态成员变量 === "+jingTaiClass1.name);
//用类名调用JingTaiClass1静态方法
JingTaiClass1.staticMethod();
//用对象访问JingTaiClass
jingTaiClass1.staticMethod();
}
}
6.静态成员变量在同一个类的不同对象间,可以共享数据
public class PuTongClass {
//static关键字可以修饰变量--被static修饰的变量是静态成员变量【类变量】
public static String name="zhangsan";
}
public class TestMain {
public static void main(String[] args) {
PuTongClass ptc1=new PuTongClass();
ptc1.name="lisi";
PuTongClass ptc2=new PuTongClass();
System.out.println("ptc2.name--"+ptc2.name); //lisi
}
}
二、this关键字
this关键字是指----当前类对象
java程序 = 对象+消息
消息就是类中的方法和变量,而对象就是为了调用类中的方法和变量的,在同一个类中,我们要使用类中的变量和方法时,需要对象调用,我们应该new 构造方法()创建对象,然后使用创建的对象类调用类中的变量和方法,而this关键字出现类中的方法里,表示使用当前类默认的构造方法创建的当前类对象,当前类中this代替了new + 构造方法创建对象。
总结:
1.this--出现在哪一个类中表示这个类默认构造方法创建的对象
2. this--表示当前类对象
3.当前类的构造方法/实例方法中,表示这个类默认构造方法创建的对象,可以调用实例变量/方法,this可以省略
4.静态方法中不能有this
5.调用被局部变量隐藏的成员变量时,this不能省略。
三、super关键字
super出现在子类中,表示父类对象/构造方法
super关键字后面加( ),表示父类构造方法,若没有( ),表示父类对象
用法总结:
1.子类的构造方法中的第一行调用父类构造方法,父类构造方法super()/super([参数]),默认被省略了。
2.子类的构造方法中调用父类实例变量和实例方法,super.变量/super.方法
3.子类的实例方法中不能super()/super([参数])
4.子类的实例方法中调用父类实例变量和实例方法,super.变量/super.方法
5.子类的静态方法中不能super()/super([参数])
6.子类的静态方法中不能用super调用父类实例变量和实例方法
四、final关键字
1.final关键字可以修饰类,被修饰的类,不能被继承
2.final关键字可以修饰变量,被修饰的变量,不能修改其变量值
3.final关键字可以修饰方法,被修饰的方法,可以被继承,但不能被重写