继承的优点:
1.提高了代码的复用性,提高了软件的开发效率;
2.继承的出现 让类与类之间产生了关系,提供 了多态的前提;

继承的注意:
1.当子父类同时都有相同的( 比如成员变量,或者说成员方法)
那么调用父类的 必须使用super才可以, super.父类成员变量; 方法也是一样;
2.子父类中的执行顺序:

1、父类静态代码块
2、子类静态代码块
3、父类代码块
4、父类构造器
5、子类代码块

6、子类构造器

分析:

其实当创建一个子类对象时,如:HelloB b = new HelloB(); 依次是执行了下面的步骤:

(1)因为new的时候用到了HelloB.class,如果是第一次用到HelloB,则JVM会先找到HelloB.class并加载到内存【整个过程就执行一次】

(2)如果该类存在静态代码块的话,执行静态代码块(静态代码块的执行目的就是为了整个类进行初始化)【整个过程就执行一次】

(3)在堆内存中开辟空间分配内存地址

(4)在堆内存中建立对象的属性(非静态),并进行默认初始化(堆内存中的成员变量都有默认值)

(5)对成员进行显示初始化

总结: 创建一个对象的步骤是: 1.加载这个类:2.执行静态代码块:3 在堆空间分配地址
4.在堆空间建立对象的属性,并进行默认初始化:5.对成员进行显示初始化;

==============================================================

抽象类

定义格式
abstract class 类名 {
}

抽象方法定义的格式:

public abstract 返回值类型 方法名(参数);
//研发部员工
 abstract class Developer {
 public abstract void work();//抽象函数。需要abstract修饰,并分号;结束
 }

抽象类的特点:
1,抽象类与抽象方法都必须使用 abstract来修饰
2,抽象类不能直接创建对象
3,抽象类中可以有抽象方法,也可以没有抽象方法
4,抽象类的子类
a,实现了抽象方法的具体类
b,抽象类