继承:实现代码复用 1.单继承,通过extends实现 2.不能继承父类那些东西? 构造方法不能继承 private修饰的不能继承 不在同一个包中的默认的不能继承 3.super可以访问父类的资源 父类的方法,属性, 构造方法: 只能在构造方法中访问父类构造方法。而且访问父类构造方法必须放在第一行 不能直接使用super 4.继承关系下,构造方法执行顺序 父类的静态属性—>父类的静态代码块—>子类静态属性—->子类静态代码块—->父类非静态属性—->父类非静态代码块—>父类构造方法—>子类非静态资源—>子类构造方法 5.抽象类: abstract修饰的类 抽象方法: abstract修饰,抽象方法没有方法体 抽象类不能创建对象 抽象类中的方法不一定都是抽象方法 抽象方法所在的类一定是抽象类 一个类继承抽象的父类,必须实现父类中的抽象方法,除非自己也是抽象类 6.final: 修饰属性:常量 修饰方法:不能被重写 修饰类:不能被继承 7.final修饰方法的时候,能否和abstract同时使用:不能
多态:同一种事物,条件不同,产生的结果也不同 同一种引用类型,使用不同的实例,而执行不同的操作 父类的类型指向的是子类的实例 Pet pet = new Dog();//起作用的是dog Pet pet = new Penguin();//起作用的是Penguin 使用步骤: 1.有继承 2.子类重写父类的方法 3.父类的类型指向子类的实例 Pet pet = new Dog();//向上转型(类似:自动类型转换) 向上转型后会丢失子类特有的属性与方法 需要向下转型。判断该实例究竟是哪个类的类型 instanceof pet instanceof Dog:如果pet是Dog的实例,返回true,如果不是返回false 注意:ClassCastException:类型转换异常