4. 继承
4.1 超类、派生类
又叫父类、子类
任何类都是Object类的派生类,如果没有用extends
关键字,则默认`extends Object;
- 同package
子类继承了父类中所有非private的变量、方法 - 不同package
子类只能继承父类的public、proteced的变量、方法 - protected修饰符的补充
protected和默认的变量和方法,在同一包中,不论子类还是普通类都能操作;在不同包中,普通类都不能操作protected和默认变量和方法,子类可以操作protected,但不能操作默认的。
4.2 子类与对象
当子类继承父类的非private成员,子类创建对象时,系统会为子类所有的成员变量分配内存,同时也为父类的成员变量分配内存,虽然protected变量也分配了内存,但却不作为子类对象的变量。此处看似浪费了内存,但子类对象可以通过继承的父类方法调用父类的protected变量。