继承与多态
类的定义
- 先定义变量
 - 后定义方法
- 公有方法
 - 保护方法
 - 私有方法
 - getter/setter方法
 
 
继承
就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接 访问父类中的非私有的属性和行为。
class 父类 {     ...      }class 子类 extends 父类 {     ...      }继承后的特点
- 成员变量
 - 成员方法
 - 构造方法
 
super与this
- super :代表父类的存储空间标识(可以理解为父亲的引用)。
 - this :代表当前对象的引用(谁调用就代表谁)。
 
子类默认的空构造方法默认调用super(), 也就是父类的默认构造函数, 如果父类没有无参构造函数, 则编译会出错. 这个时候需要手动调用父类的构造函数()
class Father{    public Father(int i) {}}class Son extends Father{    public Son(){ super(1); }}如果用this()或者super() 调用构造器, 则必须在构造函数内的第一行调用(必须保证父类在子类之前初始化)
特点
- 单继承
 - 多层继承
 
抽象类
- 抽象方法 : 没有方法体的方法。
 - 抽象类:包含抽象方法的类。
 
public abstract class Animal {         public abstract void run(); }接口
接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么 接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法 (JDK 9)
public interface 接口名称 {         // 抽象方法         // 默认方法         // 静态方法         // 私有方法      }class 类名 implements 接口名 {         // 重写接口中抽象方法【必须         // 重写接口中默认方法【可选】         } 默认方法
public interface LiveAble {         public default void fly(){                  System.out.println("天上飞");               } }静态方法
public interface LiveAble {         public static void run(){                  System.out.println("跑起来~~~");               } }私有方法
- 私有方法:只有默认方法可以调用。
 - 私有静态方法:默认方法和静态方法可以调用。
 
多实现
class 类名 [extends 父类名] implements 接口名1,接口名2,接口名3... {         // 重写接口中抽象方法【必须】         // 重写接口中默认方法【不重名时可选】    } - 如果默认方法有重名的,必须重写一次。
 
抽象类与接口
抽象类是is-a关系, 是模板式设计 接口是 can-do关系, 是契约式设计
优先定义接口, 避免直接使用继承
多态
父类类型 变量名 = new 子类对象; 变量名.方法名();多态的好处
final关键字
- 修饰类 表明该类是无法继承的
 - 修饰方法 表明该方法是无法覆写的
 - 修饰局部变量 说明该变量在声明的时候,就必须初始化完成,而且以后也不能修改其内存地址
 - 修饰成员变量 同上
 
访问权限控制
| 访问权限控制符 | 任何地方 | 包外子类 | 包内 | 类内 | 
|---|---|---|---|---|
| public | √ | √ | √ | √ | 
| protected | × | √ | √ | √ | 
| default | × | × | √ | √ | 
| private | × | × | × | √ | 
- 不允许从外部创建对象时 使用private修饰构造方法
 - 工具类不允许有public 或 default 构造器
 - 成员变量非static 需要与子类共享 必须为protected
 - 成员变量非static 仅在内部使用 使用private
 - static成员变量 仅在内部使用 使用 private
 - 定义static成员变量时 考虑加final修饰
 - 成员方法 仅在内部使用 使用private
 - 成员方法仅对继承类公开 使用 protected