关闭

JAVA基础课总结八

标签: java多态
119人阅读 评论(0) 收藏 举报


一、多态

   A:对象在不同时刻表现出来的不同的状态

 

   B:多态前提

 a:要有继承关系。

b:要有方法重写。

c:要有父类引用指向子类对象。

   在多态的时候,父类的引用除了子类重写的方法是调用的子类的之外,其他的都是调用的父类的,如果父类没有就报错

 

C:多态中的成员访问特点

a成员变量

编译看左边(父类),运行看左边(父类)

 

b成员方法

编译看左边(父类),运行看右边(子类)

 

c静态方法

编译看左边(父类),运行看左边(父类)

(静态和类相关,算不上重写,所以,访问还是左边的)

只有非静态的成员方法,编译看左边,运行看右边 

 

D:多态中向上转型和向下转型

Person p = new SuperMan();向上转型 ,多态本身就是向上转型

SuperMan sm = (SuperMan)p;向下转型

 

注意:1、在向下转型过程中有可能会出现ClassCastException 类型转换异常

2、以后必须这样做:父类的引用指向的哪个子类对象 就可以强转成哪个子类对象 否则报错,即存在instanceOf关系

3、向下转型必须建立在向上转型基础上,即存在多态的情况,即有属于的关系

E:多态的好处和弊端

a:多态的好处

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

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

    多态的使用在当做参数传递的时候最能体现扩展性

b:多态的弊端

 不能使用子类的特有属性和行为。

 

二、抽象类

 

A: 有抽象方法的类就叫做抽象类

B:抽象类特点

 a:抽象类和抽象方法必须用abstract关键字修饰

 abstract class 类名 {}

 public abstract void eat();

 b:抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口

 c:既然抽象类不能实例化 那怎么用抽象类里面的内容呢?

子类创建子类的对象 就能试用抽象类里面的内容

     d:抽象类的子类

 要么是抽象类

 要么重写抽象类中的所有抽象方法

         作用:强制要求子类重写抽象方法

 

注:构造方法是用于创造对象的,但是构造方法不能被继承,子类通过super访问父类的构造方法

 

C:抽象类的成员特点

a:成员变量:既可以是变量,也可以是常量。abstract不能修饰成员变量

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

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

D:抽象类的成员方法特性:

抽象方法 :强制要求子类做的事情。

非抽象方法 :子类继承的事情,提高代码复用性。

 

三、接口

A:从狭义的角度讲就是指java中的interface,所有的方法都是抽象方法

 从广义的角度讲对外提供规则的都是接口 

B:接口特点

 a:接口用关键字interface表示

 interface 接口名 {}

 b:类实现接口用implements表示

 class 类名 implements 接口名 {}

 c:接口不能实例化

    实现类实例化

 d:接口的子类

 a:可以是抽象类。不用重写父类所有方法

 b:可以是具体类。要重写接口中的所有抽象方法。

     e:接口的所有方法都是抽象的

C:接口的成员特点

 成员变量:只能是常量,并且是静态的并公共的。

 默认修饰符:public static final

 建议:自己手动给出。

 构造方法:接口没有构造方法。

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

              所以子类实现接口的时候 必须都重写他的方法

 默认修饰符:public abstract

 建议:自己手动给出。

 

D:类与类,类与接口,接口与接口的关系

 a:类与类:

 继承关系,只能单继承,可以多层继承。

 b:类与接口:

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

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

 c:接口与接口:

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

E:抽象类和接口的区别

 a:成员区别

 抽象类:

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

 构造方法:有

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

 接口:

 成员变量:只可以常量

 成员方法:只可以抽象

 b:关系区别

 类与类

 继承,单继承

 类与接口

 实现,单实现,多实现

 接口与接口

 继承,单继承,多继承

 c:设计理念区别

 抽象类 被继承体现的是:”is a”的关系。抽象类中定义的是该继承体系的共性功能。

 接口 被实现体现的是:”like a”的关系。接口中定义的是该继承体系的扩展功能。

 

F:接口的作用:

接口是对外暴露的规范

接口是程序的功能的扩展

 接口的出现降低了耦合性

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1394次
    • 积分:140
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档
    最新评论