接口和多态 今日所学的内容多数是比较简单的,但是在引用数据作为参数传递的时候,不是很好理解和掌握。多态的实际应用也是一个很大难点。 一、接口 1、接口概述:Java语言给我们提供了一种机制,用于处理继承单一的局限性 关键字(interface )格式:interface 接口名 {} 接口是一个类 2、接口成员特点: 成员方法:只有抽象方法(默认修饰词public abstract) 成员变量:只有常量(默认修饰词:public static final ) 构造方法:没有构造方法 3、接口的实现 关键字(implements ) 格式 class 类名 implements 接口名,接口名....{ } 4、接口、类中存在的关系 类与类:继承关系(只能单继承和多层继承) 类与接口:实现关系(多实现 ) 接口与接口:继承关系(也是多层继承,多继承关系) 5、优点: A、打破继承的局限性 B、对外提供规则规范 C、降低程序的耦合性 6、接口与抽象类的区别 抽象类: 成员方法:有抽象方法也可以含有非抽象方法 成员变量:存在常量也可以含有变量 构造方法:有构造方法(用于子类访问父类进行初始化) 接口: 成员方法:只有抽象方法 成员变量:只有常量 构造方法:没有构造方法 7、接口思想 分析:由下至上,向上抽取 实现:由上之下,先实现共性 二、多态 1、多态概述:一个类在不同时刻的不同状态 2、多态的转型:(花木兰从军) public class HuaAndDid { public static void main(String[] args) { //向上转型(子类转换成父类) Did d = new Hua(); System.out.println("点名:"+d.name); d.cooking(); //向下转型(父类转换成子类) Hua h = (Hua)d; h.show(); h.cooking(); } } class Did { String name = "花弧"; public void cooking(){ System.out.println("做饭很好吃"); } } class Hua extends Did { String name = "花木兰"; public void cooking(){ System.out.println("做饭很难吃"); } public void show(){ System.out.println("绣花"); } } 3、多态的编译 成员变量:编译看左边,运行看左边 成员方法:编译看左边,运行看右边 静态方法:编译看左边,运行看左边 4、多态的分类 a:具体类多态 class Fu {} class Zi extends Fu {} Fu f = new Zi(); b:抽象类多态 abstract class Fu {} class Zi extends Fu {} Fu f = new Zi(); c:接口多态 interface Fu {} class Zi implements Fu {} Fu f = new Zi(); 5、多态的优点缺点 优点:父类无法直接访问子类特有的成员方法 缺点:提高可维护性,可扩展性。 6、参数的传递 形式参数: 类名:需要该类的对象 抽象类名:需要该类的子类对象 接口名:需要该接口的实现类对象 返回值类型: 类名:返回的是该类的对象 抽象类名:返回的是该类的子类对象 接口名:返回的是该接口的实现类的对象
|