静态
静态代码块
①如果一一个类中有多个静态代码块,则会按照书写的顺序执行。
②静态代码块不能出现在任何方法之中。
③静态代码块中只能出现静态变量,而不能有实例变量。
静态代码块,构造代码块,构造方法的执行顺序:静态代码块>构造代码块>构造方法
例:
public class Demo1
{ int x=100;
public static void main(String[] args) { //x=200; //静态方法,只能处理静态变量
People p1-new People(); //此时 的People()是JVM自动提供的
p1. show();
People p2=new People("刘备");
p2. show();
People p3=new Peple(“'关羽","男");
p3. show();
}
}
①所属不同
静态变量属于类 ,所以也称为变量
成员变量属于对象,所以也称为实例变量(对象变量)
②内存中位置不同
静态变量存储于方法区的静态区
成员变量存储于堆内存
③内存出现时间不同
静态变量随着类的加载而加载,随着类的消失而消失
成员变量随着对象的创建而存在,随着对象的消失而消失
④调用不同
静态变量可以通过类名调用,也可以通过对象调用成员变量只能通过对象名调用
覆盖
概念:子类中有与父类同名的成员变量和成员方法。
变量的覆盖--- >变量的隐藏,方法的覆盖--->方法重写(override)
注意:子类重写的方法,与父类相比,有相同的访问权限、相同的方法名、相同的参数。
访问权限要>=父类 方法的访问权限
super与this的使用
super关键字
1)使用场景:在子类中使用
2)调用父类的成员(成员变量、成员方法):super. XXX或super.XXX()
3)调用父类的构造方法:super( [参数列表] ) ;
this关键字
1)使用场景:在本类中使用
2)调用自身的成员(成员变量、成员方法):this.XXX或this. XXX()
3)调用本类的构造方法:this( [参数列表] );
接口
关键字:interface
格式:public interface Demo{ 声明变量
抽象方法}
①接口不能实例化
②接口由全局变量和抽象方法组成
③接口声明变量是常量
④实现接口的所有抽象方法
⑤接口声明的对象,表示其实现类对象
⑥父类声明的对象,表示其子类对象
例:
public static void main(String[] args) {
Teacher tea=new Teacher();
Student stu=new Student();
tea.number=32+Icomputable.Max;
stu.number=16+Icomputable.Max;
}
⑦通过extends来继承父接口,类通过implements实现接口;
抽象类和抽象方法的联系:
1)如果类中有抽象方法,则此类必须是抽象类;
2)如果是抽象类,可以有抽象方法;也可以没有抽象方法。
3)抽象类不能创建对象。
——必须有个子类继承抽象类
————继承抽象类的子类,必须重写父类中的抽象方法。