什么是继承,继承的好处
将多个类的共性内容,抽取到一个独立的类中,从而产生特殊关系(父类—子类关系)
好处
- 提高代码复用性
- 提高代码可维护性
- 类的继承是多态的前提
继承的特点
- 可以层层继承
- 只支持多继承,不支持单继承
子类继承父类,构造方法如何访问
构造方法是不能继承的,子类通过super()默认访问父类的无参构造方法
子类继承父类,子类的所有构造方法默认访问父类的无参构造方法;
实际开发中:
写代码的时候 子类继承父类:
子类的无参构造方法----默认父类无参 子类的有参构造方法—直接访问父类有参构造方法
static关键字的特点
随着类的加载而加载,优于对象存在
不能和this共存
本身概念:体现,共享,共用;
访问方式:类中静态的东西----> “类成员”,直接推荐方式,使用类名访问
类名.变量名;
类名.方法名() ;
构造代码块–静态代码块
每次执行构造方法之前,如果存在构造代码块,先执行构造代码块 静态代码块,随着类的加载而加载,类加载一次,静态代码块执行一次!
静态代码块 > 构造代码块 > 构造方法
继承中成员变量/方法的关系
- 子类和父类中成员变量名称不一致,访问简单
- 子类和父类中的成员变量名称一致
- 就近原则----先局部方法体内,再类中,再父类中,-----如果找不到发出异常
如果子类的成员变量和父类的不一致
1)先在子类的局部位置找,是否存在,存在,就使用;
2)如果子类的局部位置没有,在子类的成员位置中找,是否存在,存在就使用;
3)如果子类的成员位置也没有,然后再父类的成员位置找,是否存在,存在就使用;
4)如果父类的成员位置也没有,(父类没有它的父类),就报错,整个类中没有变量;
方法重写
通过继承,父类中的方法,子类中可以继承并重写
class fu{
public void call(){
System.out.println("hh");
}
}
class zi extends fu{
public void call(){
super();//用来继承父类中的方法体,可以不继承,直接覆盖
//super(); 这样就好了
System.out.println("666");
}
}
final
final 表示不可修改的,最终的
修饰类,类不能被继承
修饰方法,方法不能被重写
修饰变量,此时变量是一个常量