黑马程序员技术交流社区
标题:
多态,抽象类,接口
[打印本页]
作者:
新人—小明同学
时间:
2016-7-8 02:18
标题:
多态,抽象类,接口
多态前提:
a:要有继承关系。
b:要有方法重写。
c:要有父类引用指向子类对象
1多态中的成员访问特点之成员变量
编译看左边(父类),运行看左边(父类)
2多态中的成员访问特点之成员方法
编译看左边(父类),运行看右边(子类)
3
多态中的成员访问特点之静态成员方法
编译看左边(父类),运行看左边(父类)
只有非静态的成员方法,编译看左边(父类),运行看右边(子类)
多态中向上转型和向下转型 Person p = new SuperMan();向上转型 SuperMan sm = (SuperMan)p;向下转型
多态的好处
a:提高了代码的维护性(继承保证)
b:提高了代码的扩展性(由多态保证)
Animal a = new Cat();开发的时候很少在创建对象的时候用父类引用指向子类对象,
直接创建子类对象更方便:Cat c1 =new Cat();因为可以使用子类中的属性和行为
当作参数(这里是方法的形式参数)的时候用多态最好,因为扩展性强
多态的好处
可以当作形式参数,可以接收任意子类对象
C:多态的弊端
不能使用子类的特有属性和行为。
抽象类特点
a:抽象类和抽象方法必须用abstract关键字修饰
抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口
抽象类不能实例化
抽象类的成员特点
不能修饰成员变量,可以修饰常量
a:成员变量:既可以是变量,也可以是常量。abstract是否可以修饰成员变量?不能修饰成员变量(理解为:成员变量是具体的,是属性,颜色,有具体颜色)
b:构造方法:有。为了给子类初始化使用的
用于子类访问父类数据的初始化。
c:成员方法:既可以是抽象的,也可以是非抽象的。
抽象方法 强制要求子类做的事情。()
: 非抽象方法 子类继承的事情,提高代码复用性。
接口特点
a:接口用关键字interface表示
按照多态的方式来实例化。inter i = new Demo();
可以是具体类。一定要重写接口中的所有抽象方法。(推荐方案)
接口成员特点
成员变量;只能是常量,并且是静态的并公共的。 * 默认修饰符:public static final(能互换,默认给出)
成员方法:只能是抽象方法。 * 默认修饰符:public abstract
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2