代码块:
在Java语言中用{}括起来的内容,称为代码块。
代码块分类:
局部代码块:在方法内,作用是限制变量的生命周期。
构造代码块:在类的成员位置,每次在执行构造方法之前,如果当前类中有构造代码块,则优先执行代码块,在执行构造方法。作用:如果多个类的构造方法有共同的内容,那么就可以抽取出来,放到构造代码块中
静态代码块:在类的成员位置,在{}外边被static修饰,静态代码块。
优先于对象存在。 特点:只执行一次。优先执行。
构造代码块,静态代码块,构造方法之间的优先级关系:
静态代码块(只执行一次)>构造代码块>构造方法。
static关键字特点:
随着类的加载而加载(static和类有关)
1)被static修饰的方法/变量,他都是优先于对象存在的。
2)static 可以被多个对象共享(犹如饮水机的水被多人共享)
3)被static修饰的变量/方法可以直接用类名调用。
注意事项:static关键字: 静态只能访问静态,(动态也可以访问静态)
获取一个随机数:
double d=Math.random();//获取的是0.01~1之间的小数
使用强制类型转换,将0.01~1的范围扩大100倍。 int ranNumber=(int)(Math.random*100+1)
继承:
关键字extends,表示正在构造的新类派生于一个已经存在的类已存在的类成为超类或者父类。而当前构造的新类成为子类或者派生类。
extends特点:a)在Java中只支持单继承不支持多继承,但是支持多层继承。
b1)子类继承父类的时候,如果子类的成员方法名称和父类方法名称不一致时,分别调用就行。
b2)当子类的成员方法名称与父类方法名称一致时,
先在子类的局部位置找,如果有就直接输出。
子类的局部位置没有的话,在子类的成员位置找,有则直接输出。
子类的成员位置如果没有,则直接去父类的成员位置找,有就直接输出,没有直接报错。
extends注意事项:
1)子类只能继承父类非私有的部分(成员变量和成员方法),
2)子类不能继承父类的构造方法,只能通过super间接访问父类的构造方法
子类继承父类的时候,通过super间接访问父类的构造方法:
this:当前类的对象。
super:代表父类的对象(带有父类空间标识)
this与super的用法:
成员变量:
this.成员变量
super.成员变量
成员方法:
无参: this.成员方法();
super.成员方法();
有参: this.成员方法(“····”)
super.成员方法(“····”)
子类继承父类的时候,子类的所有构造方法都直接默认访问父类的无参构造。
3)不要为了部分功能去使用继承,因为可能继承的父类的某个方法对子类没有用
4)使用继承,就要体现出“is a”的关系,
如果子类继承父类的过程中,父类的无参构造没有给出,该如何解决?
结局方案:
1)在父类中手动加入无参构造。
2)在子类的构造方法中通过super(有参)去间接访问父类的有参构造。
3)在子类的无参构造方法中,先去访问本类的有参构造,通过this传参,然后通过本类的有参构造方法去间接访问父类的有参构造super(传参)。