多态 1.定义:同一种行为,具有多个不同的表现形式 2.前提条件:必须继承或者实现,必须有的重写 3.语法:父类的类名 对象名=new 子类的类名(实参列表); 子类的对象指向父类的引用 4.特性: 一旦有多态,分区编译和运行(编译看左,运行看右) 编译看左边:对象只能调用父类中存在的内容(子类独有的是调用不到的) 名义类型 运行看右边:运行的时候看实际类型是什么?调用的内容是调用实际类型 实际类型 属性和静态方法是没有多态的! 因为:属性和静态方法是没有重写和概念的 在调用属性和静态方法的时候,只看编译时类(名义的类型) 接口 JDK7.0之前 接口全部是抽象方法写的 JDK8.0 新增了特性 默认方法:default修饰符修饰的方法 就相当于抽象中的普通方法(实现类可以继承下去的,实现类就可以重写该方法) 静态方法:static修饰的方法 只能采用接口名去调用 接口的应用: 类和类之间:单继承 类和接口之间:多实现 接口和接口之间:多继承 语法:interface Fly extends MyInterface,MyInter 注意:Fly的实现类只需要实现Fly接口以及其以上所有接口中的所有抽象方法 接口的知识点 定义:访问修饰符 interface 接口名{} 公有的和缺省的 特性: a.接口的所有的属性默认都是公有的静态变量 b.接口中的所有方法都是默认的抽象方法 c.如何使用接口 应该通过子类(实现类)去使用 使用方法:实现类 implement 接口 实现类需要实现接口中所有的抽象方法 d.接口中的可以实例化对象吗?不可以 e.接口中有构造器吗?没有 f.一个类的实现的接口可以有N个 使用方法:实现类需要实现所有接口中的所有方法 g.一个类中实现了N个接口,还可以为其设置父类吗?可以 枚举 JDK1.5之前的枚举实现方法: 一个类只提供有限个对象 a.构造器私有化 b.对外提供若干个公有的静态的本类类型的常量对象 JDK1.5之后引入的枚举类型: 采用enum修饰的类: 特性: a.构造器默认的就是私有的 b.在枚举的首行直接写对象的名,如果是多个对象,采用逗号隔开 c.如果想要采用构造器对属性赋值的话,需要在常量对象名后追加小括号(传递参数) 枚举类型默认是enum类 枚举的常用方法(来自于enum类) toString() 返回对象名(枚举可以选择对其进行重写) name() 返回对象名(final修饰) Ordinal 返回该对象的索引位置 static values() 返回枚举类中的所有的对象 static valueOf(String name)根据对象名获取枚举对象 枚举的扩展 枚举可以加()构造器 { } 实例方法