您的位置:首页 > 职场人生

黑马程序员——面向对象——多态-抽象类-接口

2015-05-13 22:10 267 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
-------


一.多态的概述

是指事物的多种状态

多态的前提

1.必须有继承或实现关系

2.必须有方法重写

3.有父类引用指向子类对象

二.多态的的运行特点

1.成员变量

编译看左边,运行看左边

2.成员方法

编译看左边,运行看右边

3.静态方法

编译看左边,运行看左边

三.多态的转型

向上转型

父类 f =new 子类();

向下转型


子类 z =(子类)f;

练习题:






答案为:

B

C

我们来分析一下:

首先我们看题目先从测试类看起,A a =new B(); a.show();

父类A中有show方法,而子类B中没有,但是子类B继承了show方法,根据编译看左边,运行看右边

因此执行的是子类B中继承的show方法,show方法又调用了show2,直接运行子类B的show2方法,然

后打印出B,然后换行。

而后看 B b = new C(); b.show();子类C中有show方法,直接执行,子类show方法里面是

super.show()因此跳到父类B中show方法,但是show方法执行的是show2方法而子类C中重写了。

最后执行了子类C的show2方法,打印出C结束。



四.多态的好处与弊端

好处

1.提高了代码的维护性(继承保证)

2.提高了代码的扩展性(多态保证)

在父类作为形式参数传递的时候可以将子类作为实际参数传递,从而

体现出多态的的特征,从而体现出扩展性。

弊端

多态不能使用子类的特有的属性与功能

五.抽象类的概述

抽象指的是不能被描述的

抽象类的特点

a:

被abstract修饰

方法 abstract 方法名();

类 abstract 类名{}

b:

抽象类不一定有抽象方法,但是有抽象方法的类一定是抽象类或接口

c:

抽象类不能被实例化,一般通过他的子类进行实例化,说明这是多态的一种,叫做抽象类多态

d:

抽象类的子类要么是抽象类,要么是具体类,不过具体类必须全部重写抽象类的抽象方法。

注意:抽象类不能被实例化,因为实例化后调用抽象方法没有意义

抽象类中的抽象方法会强制子类对所有抽象方法重写

六.抽象类的成员特点

成员变量

既可以是变量,也可以是常量

构造方法

有构造方法,用于子类访问父类数据的初始化

成员方法

a:抽象方法(强制要求子类对抽象方法重写)

b:具体方法(子类继承父类方法提高代码复用性)

简答题:

一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?

一个类没有抽象方法,可以被定义为抽象类,意义是不让创建对象来访问它

可以通过类名直接调用。

七.abstract关键字不能与哪些关键字共存,为什么?

1.private

private修饰的方法不能被子类访问,与抽象类子类重写父类的特点相违背。

2.static

static修饰的方法是被类调用的,属于该类,通过abstract修饰没有意义。

3.final

final修饰的方法为最终方法不能被修改,与抽象类子类重写父类的特点相违背。

八.接口的概述

接口就是本来没有的功能,后来有了,但是又不是全部对象都有的功能

我们又不能通过改变整个类来实现这个功能。

因此我们提供接口来是部分对象实现这个功能,这就是接口。

九.接口的成员特点

1.成员变量

只能是常量

系统默认添加修饰符 public static final 表示静态的公共的。

2.构造方法

接口没有构造方法

3.成员方法

只能是抽象方法

默认修饰符 public abstract

十.类与接口之间的关系

1.类与类的关系:

类与类之间是继承关系。只能单继承,不过可以多层继承。

2.接口与类的关系:

类与接口之间是实现关系。既可以单实现,也可以多实现。

也可以在继承一个类的同时实现多个接口。

3.接口与接口的关系:

接口与接口之间是继承关系。既可以单继承,也可以多继承。

十一.接口与抽象类的区别

1.成员区别

A:抽象类

成员变量:可以是变量,也可以是常量

成员方法:可以是抽象的,也可以是非抽象的

构造方法:有构造方法

B:接口

成员变量:只能是常量

成员方法:只能是抽象方法

构造方法:没有

2.关系区别:

类与类:

继承关系,单继承,多层继承

类与接口:

实现关系,可以单实现也可以多实现

接口与接口:

继承关系,可以单继承,也可以是多继承

3.设计理念不同

抽象类:

是is a形式,在抽象类中定义的是对象的共性功能。

接口:

是like a形式,接口中定义是对象的扩展功能,是对象本来没有的特性,后来有的。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐